-
-
Save pellaeon/2080306b1d1db375074c to your computer and use it in GitHub Desktop.
/*!CK:1682740188!*/ /*1436151151,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["87tQA"]); | |
} | |
__d("TickerStoryList", ["Event", "Animation", "Arbiter", "AsyncRequest", "AsyncSignal", "Bootloader", "ChannelConstants", "LegacyContextualDialog", "CSS", "DOM", "HTML", "Keys", "LayerFadeOnHide", "LiveTimer", "NavigationMessage", "Parent", "Rect", "Run", "ScrollableArea", "SelectorDeprecated", "Style", "TickerController", "TickerReadStateTracking", "Toggler", "URI", "UserActivity", "UserAgent_DEPRECATED", "Vector", "DOMVector", "BanzaiODS", "clickRefAction", "collectDataAttributes", "containsNode", "cx", "csx", "ex", "emptyFunction", "ge", "getElementText", "goURI", "throttle", "tickerPhoteSnowLiftOpenStatus"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua, va) { | |
b.__markCompiled && b.__markCompiled(); | |
var wa = 15000, | |
xa = {}; | |
function ya(za, ab, bb) { | |
xa[za.id] = this; | |
ba.setActiveInstance(this); | |
this._root = za; | |
this._content = p.find(za, '.ticker_stream'); | |
this._stories = p.find(this._root, '.tickerActivityStories'); | |
this._scrollableArea = ab; | |
this._container = p.find(za, 'div.uiScrollableAreaWrap'); | |
this._newestStory = {}; | |
this._objectIDs = []; | |
this._fetchedStories = {}; | |
this._fetchedStoriesDialog = {}; | |
this._storyDialogResources = {}; | |
this._removedStoryIDs = []; | |
this._storiesToRemove = []; | |
var cb = Date.now(); | |
this._initTime = cb; | |
this._lastUpdate = cb; | |
this._lastPull = cb; | |
this._lastInsert = cb; | |
this._pollOnly = false; | |
this._autoloadStoryIndex = 1; | |
this._scrollTopThreshold = 100; | |
this._scrollTopPrompt = p.find(this._root, '.scrollTopPrompt'); | |
this._scrollTopPromptVisible = false; | |
this._maxStoriesToKeep = 50; | |
this._minStoriesToKeep = 25; | |
this._tickerInSidebarMode = !!v.byClass(this._root, 'fbChatSidebar'); | |
this._loadStoriesWithActions(); | |
ka('ticker_flyout'); | |
ka('ticker_flyout_prefetch'); | |
ka('ticker_flyout_loadtime'); | |
ka('ticker_stream'); | |
this._uaCurStoryIDFetch = null; | |
this._uaCurStoryIDPrefetch = null; | |
var db = p.create('div', { | |
className: 'storyQueue hidden_elem' | |
}); | |
this._storyQueue = db; | |
p.appendContent(this._root, db); | |
this._lastKStories = { | |
head: null, | |
tail: null, | |
count: 0, | |
actors: {}, | |
apps: {}, | |
stories: {} | |
}; | |
this._dedupeKeys = {}; | |
this._initObjectIDs(); | |
this._initConfig(bb); | |
this._resetMorePager(); | |
this._initListeners(); | |
this._initSubscriptions(bb); | |
i.inform('ticker/init', this, i.BEHAVIOR_PERSISTENT); | |
this._poll(); | |
} | |
Object.assign(ya, { | |
instances: function() { | |
return xa; | |
} | |
}); | |
Object.assign(ya.prototype, { | |
ADS_IDLE_MS: 300000, | |
FLYOUT_MAX_HEIGHT: 450, | |
FLYOUT_OFFSET_THRESHOLD: 20, | |
FLYOUT_COMMENT_OFFSET: 15, | |
FLYOUT_VIEWPORT_PADDING: 75, | |
FLYOUT_ACTION_FOOTER_PADDING: 8, | |
FLYOUT_TARGET_HEIGHT_OFFSET: 25, | |
DEFAULT_LOOK_BEHIND: 10, | |
init: function(za, ab, bb) { | |
new ya(za, ab, bb); | |
}, | |
_lastKStoriesInsert: function(za) { | |
this._lastKStories.stories[za.getAttribute("data-story-key")] = true; | |
var ab = { | |
story: za, | |
next: null | |
}; | |
if (this._lastKStories.head) this._lastKStories.head.next = ab; | |
this._lastKStories.head = ab; | |
this._lastKStories.count++; | |
if (!this._lastKStories.tail) this._lastKStories.tail = this._lastKStories.head; | |
var bb = za.getAttribute("data-actor"); | |
if (!this._lastKStories.actors[bb]) this._lastKStories.actors[bb] = 0; | |
this._lastKStories.actors[bb]++; | |
var cb = za.getAttribute("data-app"); | |
if (cb) { | |
if (!this._lastKStories.apps[cb]) this._lastKStories.apps[cb] = 0; | |
this._lastKStories.apps[cb]++; | |
} | |
if (this._lastKStories.count > this.DEFAULT_LOOK_BEHIND) { | |
while (this._lastKStories.tail && !this._lastKStoriesRemove(this._lastKStories.tail.story)) this._lastKStories.tail = this._lastKStories.tail.next; | |
if (!this._lastKStories.tail) this._lastKStories.head = null; | |
} | |
}, | |
_lastKStoriesRemove: function(za) { | |
var ab = za.getAttribute("data-story-key"), | |
bb = za.getAttribute("data-actor"), | |
cb = za.getAttribute("data-app"); | |
if (this._lastKStories.stories[ab]) { | |
delete this._lastKStories.stories[ab]; | |
this._lastKStories.actors[bb]--; | |
if (cb) this._lastKStories.apps[cb]--; | |
this._lastKStories.count--; | |
return true; | |
} else return false; | |
}, | |
_loadStoriesWithActions: function() { | |
var za = ra('rightCol'); | |
if (!za) return; | |
this._toggleWrapper = p.scry(za, '.tickerToggleWrapper')[0]; | |
if (this._toggleWrapper) { | |
var ab = p.scry(this._stories, '.tickerStoryWithButton'); | |
this._storiesWithActions = {}; | |
for (var bb = 0; bb < ab.length; bb++) { | |
var cb = ab[bb]; | |
this._storiesWithActions[cb.getAttribute('data-story-key')] = cb; | |
} | |
} | |
}, | |
_initConfig: function(za) { | |
Object.assign(this, { | |
_newest: za.newest, | |
_page_newest: za.newest, | |
_timeout: za.timeout, | |
_heartbeatTimeout: Math.min(5000, za.heartbeatTimeout), | |
_maxHeartbeatTimeout: Math.max(30000, za.maxHeartbeatTimeout), | |
_pullTimeout: Math.max(30000, za.pullTimeout), | |
_insertTimeout: za.insertTimeout, | |
_maxQueueLength: za.maxQueueLength, | |
_heartbeatEndpoint: za.heartbeatEndpoint, | |
_popupOnHover: za.popupOnHover, | |
_userIdleTimeout: za.userIdleTimeout, | |
_pollOnly: za.pollOnly, | |
_tickerSource: za.tickerSource, | |
_logFlyouts: za.logFlyouts, | |
_userScrollGaurdDelay: za.userScrollGaurdDelay, | |
_rescheduleScrollToTopDelay: za.rescheduleScrollToTopDelay | |
}); | |
}, | |
_initListeners: function() { | |
this._listeners = g.listen(this._root, { | |
click: this._handleClick.bind(this), | |
keydown: this._handleKeydown.bind(this), | |
mouseout: this._handleMouseout.bind(this), | |
mouseover: this._handleMouseover.bind(this), | |
mousedown: this._tickerDeClicker.bind(this), | |
mouseup: this._handleMouseup.bind(this) | |
}); | |
this._listeners.scroll = g.listen(this._container, 'scroll', this._handleScroll.bind(this)); | |
setTimeout(this._initInfiniteScrollListener.bind(this), 0); | |
}, | |
_initSubscriptions: function(za) { | |
x.onLeave(this._cleanup.bind(this)); | |
this._subscriptions = [i.subscribe(u.NAVIGATION_BEGIN, this._onNavHandler.bind(this)), i.subscribe('composer/publish', this._handleComposerPublish.bind(this)), i.subscribe('Ticker/storiesInserted', this._handleStoriesInserted.bind(this)), i.subscribe('Ticker/fixed', this._setFixed.bind(this, true)), i.subscribe('Ticker/unfixed', this._setFixed.bind(this, false)), i.subscribe('Ticker/resized', this._checkInfiniteScroll.bind(this)), i.subscribe('ufi/comment', this._scrollDialogToBottom.bind(this)), i.subscribe('ufi/changed', this._redrawFlyout.bind(this)), i.subscribe('Ticker/chatOpened', this._handleChatOpened.bind(this))]; | |
if (!za.pollOnly) this._subscriptions.push(i.subscribe(m.getArbiterType('ticker_update'), this._handleTickerPush.bind(this))); | |
if (za.pushChannel && !za.pollOnly) this.setPushChannel(za.pushChannel); | |
}, | |
_handleClick: function(event) { | |
if (!(event.button === 1 || event.altKey || event.ctrlKey || event.metaKey)) event.prevent(); | |
var za = event.getTarget(); | |
if (this._getButtonFromNode(za)) { | |
this._logUserAction(za, 'click', event); | |
this._handleActionButton(event); | |
return; | |
} | |
var ab = this._getStoryFromNode(za), | |
bb = v.byClass(za, 'tickerStoryAllowClick'); | |
if (!ab || ab == this._selectedStory || bb) return; | |
if (this._storyIsHidden(ab)) return; | |
if (ab == this._activeStory && !this._selectedStory) this._selecting = true; | |
if (this._storyCanOpenExternally(ab)) { | |
var cb = ab.getAttribute('data-href'); | |
if (cb && !za.getAttribute('href')) { | |
var db = { | |
href: cb | |
}, | |
eb = la(za, ['ft', 'gt']); | |
ka('click', db, event, 'FORCE', eb); | |
} else this._logUserAction(za, 'click', event); | |
this._openStoryExternally(ab, event); | |
return; | |
} | |
this._logUserAction(za, 'flyout', event); | |
this._activateStory(ab, 'click'); | |
this._selectStory(ab); | |
}, | |
_handleMouseover: function(event) { | |
this._setLocked(true); | |
var za = event.getTarget(), | |
ab = this._getOpenableStory(za); | |
if (!ab) { | |
var bb = v.byClass(za, "_5wvy"); | |
if (bb) { | |
clearTimeout(parseInt(bb.getAttribute('data-timeout-token'), 10)); | |
var cb = setTimeout(function() { | |
ya.removeMarkup(bb, ab); | |
}, wa); | |
bb.setAttribute('data-timeout-token', cb); | |
} | |
return; | |
} | |
event.kill(); | |
if (this._popupOnHover) { | |
if (!(ab.id in this._fetchedStories)) this._uaCurStoryIDPrefetch = ab.id; | |
this._fetchStory(ab); | |
} | |
if (this._selectedStory) return; | |
if (this._popupOnHover) { | |
this._clearHoverTimeouts(); | |
var db = this._storyCanOpenExternally(ab) ? 500 : 1000, | |
eb = this._activeStory ? 75 : db; | |
this._hoverShowTimeout = this._setTimeout(function() { | |
this._activateStory(ab, 'hover'); | |
this._logUserAction(za, 'flyout', event); | |
}.bind(this), eb); | |
} | |
}, | |
_handleMouseout: function(event) { | |
var za = event.getTarget(); | |
this._setLocked(false); | |
if (za == this._getStoryFromNode(za)) { | |
var ab = p.scry(za.parentNode, '.openToggler'); | |
for (var bb = 0; bb < ab.length; bb++) z.toggle(ab[bb]); | |
} | |
this._clearClickedStory(); | |
this._scheduleHide(); | |
}, | |
_handleKeydown: function(event) { | |
this._tickerDeClicker(event); | |
var za = this._activeStory; | |
if (!za) return; | |
var ab = g.getKeyCode(event); | |
switch (ab) { | |
case r.UP: | |
case r.DOWN: | |
var bb = this._getInsertedStories(), | |
cb; | |
if (event.getModifiers().any) { | |
cb = ab === r.UP ? 0 : bb.length - 1; | |
} else cb = bb.indexOf(za) + (ab === r.UP ? -1 : 1); | |
za = bb[cb]; | |
break; | |
case r.ESC: | |
this._deactivateStory(true); | |
return; | |
default: | |
return; | |
} | |
event.kill(); | |
if (!za) return; | |
this._activateStory(za, 'keypress'); | |
this._selectStory(za); | |
}, | |
_fadeTopmostStoryButton: function() { | |
var za = 0, | |
ab = 15; | |
if (this._storiesWithActions) | |
for (var bb in this._storiesWithActions) { | |
var cb = this._storiesWithActions[bb], | |
db = p.scry(cb, '.tickerInlineActionButton')[0], | |
eb = p.scry(db, '.tickerActionIcon')[0], | |
fb = ha.getElementPosition(db).y - ha.getElementPosition(this._toggleWrapper).y; | |
if (fb < za) { | |
aa.set(db, 'opacity', 0); | |
aa.set(eb, 'opacity', 0); | |
} else if (fb >= za && fb < ab) { | |
var gb = (fb - za) / (ab - za); | |
aa.set(db, 'opacity', gb); | |
aa.set(eb, 'opacity', gb); | |
break; | |
} else { | |
aa.set(db, 'opacity', 1); | |
aa.set(eb, 'opacity', 1); | |
} | |
} | |
}, | |
_handleScroll: function() { | |
var za = va.checkIsOpen(); | |
if (za) this._preventFlyoutDismiss = true; | |
if (!this._preventScrollDismiss && !za) { | |
if (!this._preventFlyoutDismiss) { | |
this._deactivateStory(true); | |
} else this._preventFlyoutDismiss = false; | |
} else this._preventScrollDismiss = false; | |
if (!this._handleScrollThrottled) this._handleScrollThrottled = ua(this._handleScrollInner.bind(this)); | |
this._handleScrollThrottled(); | |
}, | |
_handleScrollInner: function() { | |
this._fadeTopmostStoryButton(); | |
this._checkInfiniteScroll(); | |
this._setIsUserScrolling(); | |
if (!this._scrollLogged) { | |
this._scrollLogged = true; | |
var za = this._stories.childNodes.length, | |
ab = this._stories.getAttribute('data-gt'), | |
bb = { | |
ticker_scroll: 1, | |
number_stories: za, | |
source: ab | |
}; | |
ka('scroll', null, null, 'FORCE', { | |
gt: bb | |
}); | |
} | |
}, | |
_setIsUserScrolling: function() { | |
clearTimeout(this._userScrollingToken); | |
if (this._isScrolledToTop()) { | |
this._userScrolling = false; | |
return; | |
} | |
this._userScrolling = true; | |
this._userScrollingToken = setTimeout(function() { | |
this._userScrolling = false; | |
this._userScrollingToken = null; | |
}.bind(this), this._userScrollGaurdDelay); | |
}, | |
_isUserScrolling: function() { | |
return this._userScrolling; | |
}, | |
_handleStoriesInserted: function() { | |
this._initInfiniteScrollListener(); | |
if (this._scrollableArea instanceof y) this._scrollableArea.adjustGripper(); | |
}, | |
_handleActionButton: function(event) { | |
var za = event.getTarget(), | |
ab = this._getOpenableStory(za), | |
bb = this._getStoryDialog(ab); | |
if (bb) var cb = bb.subscribe('beforehide', function() { | |
bb.unsubscribe(cb); | |
return false; | |
}); | |
}, | |
_handleScrollToTopClick: function() { | |
this._scrollToTop(this._poll.bind(this)); | |
}, | |
_scheduleScrollToTop: function() { | |
this._scrollToTopToken && clearTimeout(this._scrollToTopToken); | |
this._scrollToTopToken = setTimeout(function() { | |
if (this._isLocked() || this._isUserScrolling()) { | |
this._scheduleScrollToTop(); | |
} else { | |
this._scrollToTopToken = null; | |
this._scrollToTop(); | |
} | |
}.bind(this), this._rescheduleScrollToTopDelay); | |
}, | |
_scrollToTop: function(za) { | |
new h(this._container).to('scrollTop', 0).ease(h.ease.end).ondone(za).go(); | |
}, | |
_clearHoverTimeouts: function() { | |
clearTimeout(this._hoverShowTimeout); | |
clearTimeout(this._hoverHideTimeout); | |
}, | |
_getAllStories: function() { | |
return p.scry(this._root, 'div.fbFeedTickerStory'); | |
}, | |
_findStoryById: function(za) { | |
var ab = p.scry(this._root, '.fbFeedTickerStory'), | |
bb; | |
for (story in ab) { | |
bb = ab[story]; | |
if (za == this._getStoryDialogParams(bb).token) return bb; | |
} | |
return null; | |
}, | |
_getInsertedStories: function() { | |
return this._getAllStories().filter(function(za) { | |
return !o.hasClass(za, 'queuedStory'); | |
}); | |
}, | |
_getQueuedStories: function() { | |
return p.scry(this._storyQueue, '.fbFeedTickerStory.queuedStory'); | |
}, | |
_getButtonFromNode: function(za) { | |
return v.byClass(za, 'tickerInlineOverlay'); | |
}, | |
_getStoryFromNode: function(za) { | |
return v.byClass(za, 'fbFeedTickerStory'); | |
}, | |
_getActionButtonFromStory: function(za) { | |
return p.scry(za, '.tickerInlineActionButton')[0]; | |
}, | |
_getOpenableStory: function(za) { | |
var ab = this._getStoryFromNode(za); | |
return this._storyCanOpenDialog(ab) ? ab : null; | |
}, | |
_getStoryDialog: function(za) { | |
return this._fetchedStoriesDialog[za.id] || n.getInstance(za); | |
}, | |
_getStoryDialogParams: function(za) { | |
var ab = za && za.getAttribute('data-flyoutdata') || null; | |
return ab && JSON.parse(ab) || null; | |
}, | |
_storyCanOpenDialog: function(za) { | |
return !!this._getStoryDialogParams(za) && !this._storyIsHidden(za); | |
}, | |
_storyCanOpenExternally: function(za) { | |
return !!za.getAttribute('data-href') || !this._storyCanOpenDialog(za); | |
}, | |
_storyIsHidden: function(za) { | |
return o.hasClass(za, 'tickerStoryHidden'); | |
}, | |
hideActiveStory: function() { | |
this._activeStory && this.hideStory(this._activeStory); | |
}, | |
hideStory: function(za) { | |
this._deactivateStory(); | |
if (sa(za) === '') p.remove(za); | |
o.addClass(za, 'tickerStoryHidden'); | |
o.removeClass(za, 'tickerStoryClickable'); | |
}, | |
undoHideStory: function(za) { | |
o.addClass(za, 'tickerStoryClickable'); | |
o.removeClass(za, 'tickerStoryHidden'); | |
}, | |
insertStoriesAtBottom: function(za) { | |
if (!za) return; | |
var ab = p.create('div'); | |
ab.appendChild(za); | |
var bb = p.scry(ab, '.fbFeedTickerStory'), | |
cb = p.find(ab, '.tickerMorePager'), | |
db = []; | |
for (var eb = 0; eb < bb.length; eb++) | |
if (!this.dedupeStory(bb[eb])) db.push(bb[eb]); | |
if (db.length) { | |
db.push(cb); | |
p.replace(p.find(this._root, '.tickerMorePager'), db); | |
} | |
i.inform('Ticker/storiesInserted'); | |
}, | |
_scheduleHide: function() { | |
if (this._popupOnHover && !this._selectedStory) { | |
this._clearHoverTimeouts(); | |
this._hoverHideTimeout = this._setTimeout(this._deactivateStory.bind(this), 100); | |
} | |
}, | |
_setScrollTopPromptVisible: function(za) { | |
this._scrollTopPromptVisible = za; | |
o.conditionShow(this._scrollTopPrompt, za); | |
if (za && !this._listeners.scrollTop) { | |
this._listeners.scrollTop = g.listen(this._scrollTopPrompt, { | |
click: this._handleScrollToTopClick.bind(this) | |
}); | |
} else if (!za && this._listeners.scrollTop) { | |
this._listeners.scrollTop.click.remove(); | |
this._listeners.scrollTop = null; | |
} | |
}, | |
_isUserIdle: function() { | |
return !fa.isActive(this._userIdleTimeout); | |
}, | |
_schedulePoll: function() { | |
clearTimeout(this._pollToken); | |
this._pollToken = this._setTimeout(this._poll.bind(this), this._timeout); | |
}, | |
_poll: function() { | |
if (!this._isTickerVisible()) return; | |
if (this._storiesToRemove.length > 0) { | |
if (this._isInsertingStory) return this._schedulePoll(); | |
var za = this._storiesToRemove.pop(); | |
this.removeStory(za); | |
} | |
var ab = !this._isScrolledToTop() && this._getQueuedStories().length; | |
this._setScrollTopPromptVisible(ab); | |
var bb = Date.now(), | |
cb = bb - this._lastInsert; | |
if (cb < this._insertTimeout || this._isLocked()) return this._schedulePoll(); | |
var db = this._getQueuedStories(), | |
eb = this._isUserIdle(), | |
fb = db.length > 0; | |
if (fb) { | |
var gb = db.shift(); | |
this.insertStory(gb); | |
return this._schedulePoll(); | |
} | |
if (eb) return fa.subscribeOnce(this._poll.bind(this)); | |
var hb = false, | |
ib = false; | |
if (this._pollOnly) { | |
ib = bb - this._lastUpdate > this._heartbeatTimeout; | |
} else hb = (bb - this._lastPull > this._pullTimeout); | |
var jb = hb || ib; | |
if (!jb) return this._schedulePoll(); | |
this.update({ | |
pull: hb, | |
fullpoll: ib | |
}); | |
}, | |
_updatePollOnlyHeartbeatTimeout: function() { | |
if (this._pollOnly && this._heartbeatTimeout < this._maxHeartbeatTimeout) this._heartbeatTimeout = Math.min(this._heartbeatTimeout + 5000, this._maxHeartbeatTimeout); | |
}, | |
update: function(za) { | |
this._updatePollOnlyHeartbeatTimeout(); | |
if (!this._pollOnly) return this._schedulePoll(); | |
var ab = { | |
newest: (za.fullpoll || za.cache_update) ? this._newest : this._page_newest, | |
source: this._tickerSource | |
}; | |
if (!ab.newest || ab.newest === '0') throw new Error(pa('Trying to request new ticker stories with an invalid cursor %s, with' + ' the settings fullpoll %s, cache_update %s, value coming from this.%s', typeof ab.newest === 'string' ? '"' + ab.newest + '"' : ab.newest, za.fullpoll, za.cache_update, (za.fullpoll || za.cache_update) ? '_newest' : '_page_newest')); | |
Object.assign(ab, za); | |
new j().setURI(this._heartbeatEndpoint).setReadOnly(true).setOption('retries', 0).setData(ab).setHandler(this._handleResponse.bind(this)).setFinallyHandler(this._poll.bind(this)).setAllowCrossPageTransition(true).send(); | |
this._lastUpdate = Date.now(); | |
if (ab.pull) this._lastPull = this._lastUpdate; | |
}, | |
insertStory: function(za) { | |
this._lastInsert = Date.now(); | |
window.LiveTimer && t.addTimeStamps(za); | |
o.removeClass(za, 'queuedStory'); | |
if (this._isUserScrolling()) { | |
this._fadeStoryIn(za); | |
} else this._scrollToTop(this._flyStoryIn.bind(this, za)); | |
if (this._storiesWithActions && o.hasClass(za, 'tickerStoryWithButton')) this._storiesWithActions[za.getAttribute('data-story-key')] = za; | |
this._removeOldStories(); | |
}, | |
_removeOldStories: function() { | |
var za = this._getInsertedStories(); | |
if (za.length <= this._maxStoriesToKeep) return; | |
var ab = this._minStoriesToKeep, | |
bb = za.slice(ab); | |
bb.forEach(p.remove); | |
if (this._storiesWithActions) | |
for (var cb = 0; cb < bb.length; cb++) delete this._storiesWithActions[bb[cb].getAttribute('data-story-key')]; | |
this._resetMorePager(); | |
}, | |
_resetMorePager: function() { | |
var za = this._getInsertedStories(); | |
if (!za || !za.length) return; | |
var ab = za[za.length - 1].getAttribute('data-ticker-timestamp'), | |
bb = p.scry(this._root, '.tickerMorePager a')[0]; | |
if (!bb || !ab) return; | |
var cb = new ea(bb.getAttribute('ajaxify')); | |
cb.addQueryData({ | |
oldest: ab | |
}); | |
bb.setAttribute('ajaxify', cb); | |
}, | |
_setLocked: function(za) { | |
this._locked = za; | |
}, | |
_isLocked: function() { | |
return !!(this._locked || this._activeStory); | |
}, | |
informAndRemoveStory: function(za, ab, bb) { | |
var cb = this._getStoryFromNode(za), | |
db = cb.getAttribute('data-story-key'); | |
p.setContent(cb, ab); | |
o.addClass(cb, 'highlightedStory'); | |
this._setTimeout(this.removeStory.bind(this, db), bb || 6000); | |
}, | |
_getStoryByStoryKey: function(za) { | |
var ab = this._getAllStories(); | |
for (var bb = 0; bb < ab.length; bb++) { | |
var cb = ab[bb]; | |
if (cb.getAttribute('data-story-key') == za) return cb; | |
} | |
return null; | |
}, | |
removeStory: function(za) { | |
this._removedStoryIDs[za] = true; | |
var ab = this._getStoryByStoryKey(za); | |
if (!ab) return; | |
if (this._storiesWithActions) delete this._storiesWithActions[za]; | |
if (ab == this._activeStory) this._deactivateStory(); | |
var bb = this._getStoryDialog(ab); | |
bb && bb.destroy(); | |
this._lastKStoriesRemove(ab); | |
var cb = ab.getAttribute("data-dedupe-key"); | |
if (cb) delete this._dedupeKeys[cb]; | |
if (o.hasClass(ab, 'queuedStory')) { | |
p.remove(ab); | |
return; | |
} | |
this._animateStoryOut(ab); | |
}, | |
_isScrolledToTop: function() { | |
return this._container.scrollTop <= this._scrollTopThreshold; | |
}, | |
_flyStoryIn: function(za) { | |
var ab = p.create('div', { | |
style: { | |
marginTop: '-1000px' | |
} | |
}, za); | |
aa.set(ab, 'opacity', 0); | |
p.prependContent(this._stories, ab); | |
var bb = ha.getElementDimensions(ab).y; | |
aa.set(ab, 'marginTop', '-' + bb + 'px'); | |
this._isInsertingStory = true; | |
new h(ab).to('marginTop', 0).ease(h.ease.end).checkpoint(.5).to('opacity', 1).ondone(function() { | |
p.replace(ab, za); | |
this._afterInsert(za); | |
this._isInsertingStory = false; | |
}.bind(this)).go(); | |
}, | |
_fadeStoryIn: function(za) { | |
new h(this._stories).to('opacity', .5).ondone(function() { | |
p.prependContent(this._stories, za); | |
this._container.scrollTop = this._container.scrollTop + this._stories.firstChild.offsetHeight; | |
this._scheduleScrollToTop(); | |
new h(this._stories).to('opacity', 1).ondone(function() { | |
this._afterInsert(za); | |
}.bind(this)).go(); | |
}.bind(this)).go(); | |
}, | |
_animateStoryOut: function(za) { | |
var ab = p.create('div', { | |
style: { | |
overflow: 'hidden', | |
position: 'relative' | |
} | |
}); | |
p.insertBefore(za, ab); | |
p.appendContent(ab, za); | |
new h(ab).to('top', 20).to('height', 0).to('opacity', 0).ease(h.ease.end).ondone(function() { | |
p.remove(ab); | |
i.inform('Ticker/animateOut'); | |
}.bind(this)).go(); | |
}, | |
_afterInsert: function(za) { | |
i.inform('Ticker/afterInsert'); | |
}, | |
setPushChannel: function(za) { | |
this._pushSubscription && this._pushSubscription.unsubscribe(); | |
this._pushSubscription = i.subscribe(m.getArbiterType(za), this._handleTickerPush.bind(this)); | |
d(['ChatConfig', 'ChannelConnection'], function(ab, bb) { | |
this._channelConnection = bb; | |
this._checkChannelConnection(); | |
this._channelConnectionSubscription = this._channelConnection.subscribe([this._channelConnection.CONNECTED, this._channelConnection.RECONNECTING, this._channelConnection.SHUTDOWN, this._channelConnection.MUTE_WARNING, this._channelConnection.UNMUTE_WARNING], this._handleChannelConnection.bind(this)); | |
}.bind(this)); | |
}, | |
_checkChannelConnection: function() { | |
o.conditionClass(this._root, 'disconnected', this._channelConnection.disconnected()); | |
}, | |
_handleTickerPush: function(za, ab) { | |
var bb = ab.obj; | |
if (bb.delete_id) { | |
this._storiesToRemove.push(bb.delete_id); | |
return; | |
} | |
var cb = bb.story_xhp; | |
if (!cb) return; | |
var db = q(cb).getRootNode(); | |
if (!bb.story_time || bb.story_time === '0') throw new Error(pa('An invalid story time was pushed: %s, for ticker story: %s', typeof bb.story_time === 'string' ? '"' + bb.story_time + '"' : bb.story_time, db.getAttribute('data-flyoutdata'))); | |
this._newest = bb.story_time; | |
this.queueStory(db, bb.flyout_js_cmds); | |
this._newestStory = { | |
actorID: bb.actor, | |
storyKey: db.getAttribute('data-story-key') | |
}; | |
}, | |
_handleComposerPublish: function(za, ab) { | |
ab.tickerMarkup && this.insertStory(ab.tickerMarkup); | |
}, | |
_logRender: function() { | |
if (this._loggedRender) return; | |
var za = this._tickerInSidebarMode; | |
if (za || v.byClass(this._content, 'home_right_column')) { | |
new k('/ajax/log_ticker_render.php', { | |
sidebar_mode: za | |
}).send(); | |
this._loggedRender = true; | |
} | |
}, | |
_isTickerVisible: function() { | |
var za = (ba.getActiveInstance() == this); | |
za && this._logRender(); | |
return za; | |
}, | |
_handleResponse: function(za) { | |
var ab = za.getPayload(); | |
if (ab.newest) this._newest = this._page_newest = ab.newest; | |
if (ab.content) | |
if (ab.content instanceof Array) { | |
for (var bb = 0; bb < ab.content.length; bb++) this.queueStoryMarkup(ab.content[bb]); | |
} else this.queueStoryMarkup(ab.content); | |
}, | |
queueStoryMarkup: function(za) { | |
var ab = q(za).getRootNode(); | |
this.queueStory(ab); | |
}, | |
dedupeStory: function(za) { | |
var ab = za.getAttribute('data-story-key'), | |
bb = ab && (!!this._objectIDs[ab] || !!this._removedStoryIDs[ab]); | |
bb = bb || !!this._lastKStories.actors[za.getAttribute('data-actor')] || !!this._lastKStories.apps[za.getAttribute('data-app')]; | |
var cb = za.getAttribute('data-dedupe-key'); | |
bb = bb || cb && this._dedupeKeys[cb]; | |
if (za.getAttribute('data-force-push')) bb = false; | |
ab && (this._objectIDs[ab] = true); | |
return bb; | |
}, | |
queueStory: function(za, ab) { | |
if (this.dedupeStory(za)) return; | |
this._lastKStoriesInsert(za); | |
var bb = za.getAttribute("data-dedupe-key"); | |
if (bb) this._dedupeKeys[bb] = true; | |
o.addClass(za, 'queuedStory'); | |
p.appendContent(this._storyQueue, za); | |
var cb = ab && ab.length; | |
if (cb) ab.forEach(function(eb) { | |
new Function(eb).apply(); | |
}); | |
za.setAttribute('id', za.id + '_' + this._root.id); | |
var db = this._getQueuedStories(); | |
db.slice(0, -this._maxQueueLength).forEach(p.remove); | |
if (cb) this._fetchedStories[za.id] = true; | |
}, | |
_cleanup: function() { | |
ba.clearRHCplaceholder(); | |
if (!v.byClass(this._content, 'hasRightCol')) return; | |
this._objectIDs = []; | |
this._subscriptions.forEach(i.unsubscribe); | |
this._channelConnectionSubscription && this._channelConnection.unsubscribe(this._channelConnectionSubscription); | |
this._pushSubscription && this._pushSubscription.unsubscribe(); | |
for (var za in this._listeners) this._listeners[za] && this._listeners[za].remove(); | |
clearTimeout(this._pollToken); | |
this._pollToken = null; | |
this._cleanupInputFocusListener(); | |
this._cleanupContentResizeListener(); | |
i.inform('Ticker/cleanup'); | |
}, | |
_onNavHandler: function(za, ab) { | |
var bb = ab.params.key; | |
if (bb != 'lf' && bb != 'h') this._cleanup(); | |
}, | |
registerStoryDialog: function(za, ab) { | |
if (this._uaCurStoryIDFetch == za.id) this._uaCurStoryIDFetch = null; | |
if (this._uaCurStoryIDPrefetch == za.id) this._uaCurStoryIDPrefetch = null; | |
this._fetchedStories[za.id] = true; | |
this._fetchedStoriesDialog[za.id] = ab; | |
ab.setContext(za); | |
ab.subscribe('hide', this._deactivateStory.bind(this, true)); | |
ab.subscribe('success', this._focusStory.bind(this, za)); | |
ab.subscribe('beforehide', function() { | |
if (this._selecting) { | |
this._selecting = false; | |
return false; | |
} | |
}.bind(this)); | |
if (this._popupOnHover) { | |
ab.subscribe('mouseenter', this._clearHoverTimeouts.bind(this)); | |
ab.subscribe('mouseleave', this._scheduleHide.bind(this)); | |
ab.subscribe('show', function() { | |
setTimeout(this._highlightDialogScrollbar.bind(this, ab), 0); | |
var bb = g.listen(ab.getContent(), 'mousedown', function() { | |
this._selectStory(za); | |
bb.remove(); | |
}.bind(this)); | |
}.bind(this)); | |
} | |
if (za == this._activeStory) this._openDialog(ab); | |
}, | |
_highlightDialogScrollbar: function(za) { | |
var ab = p.scry(za.getContent(), '.uiScrollableArea')[0]; | |
ab && y.poke(ab); | |
}, | |
_openStoryExternally: function(za, event) { | |
var ab = za.getAttribute('data-href'); | |
if (!ab || ab == '#') return; | |
var bb = za.getAttribute('data-story-rel'); | |
switch (bb) { | |
case 'theater': | |
this._deactivateAndClearStory(); | |
l.loadModules(["PhotoViewer"], function(eb) { | |
eb.bootstrap(ab, za); | |
}); | |
return; | |
case 'async': | |
this._deactivateAndClearStory(); | |
j.bootstrap(ab, za); | |
return; | |
} | |
var cb = za.getAttribute('data-target'), | |
db = (event.which != 1 || event.getModifiers().any || cb == '_blank'); | |
db ? window.open(ab, '_blank') : ta(ab); | |
}, | |
_deactivateAndClearStory: function() { | |
this._clearHoverTimeouts(); | |
this._deactivateStory(); | |
}, | |
_focusStoryWillTriggerScroll: function(za) { | |
var ab = this._container, | |
bb = ab.clientHeight, | |
cb = za.offsetHeight, | |
db = ab.scrollTop, | |
eb = db + bb, | |
fb = za.offsetTop, | |
gb = fb + cb; | |
return fb < db || gb > eb; | |
}, | |
_focusStory: function(za) { | |
if (this._focusStoryWillTriggerScroll(za)) this._preventScrollDismiss = true; | |
var ab = new w(za), | |
bb = v.byClass(za, 'scrollable'), | |
cb = ab.boundWithin(new w(bb)).getPositionVector(), | |
db = ab.getPositionVector().sub(cb); | |
if (db.y !== 0) db.scrollElementBy(bb); | |
za.focus(); | |
}, | |
_selectStory: function(za) { | |
this._selectedStory = za; | |
o.addClass(za, 'tickerStorySelected'); | |
o.addClass(this._root, 'tickerChildSelected'); | |
}, | |
_activateStory: function(za, ab) { | |
this._clearHoverTimeouts(); | |
if (za == this._activeStory || !this._storyCanOpenDialog(za)) return; | |
this._deactivateStory(); | |
this._focusStory(za); | |
this._activeStory = za; | |
o.addClass(za, 'tickerStoryActive'); | |
window.Toggler && da.hide(); | |
if (this._logFlyouts) { | |
ab = ab || 'unknown'; | |
new k('/ajax/feed/ticker/flyout.php', { | |
src: ab | |
}).send(); | |
} | |
ca.log(za); | |
var bb = this._getStoryDialog(za); | |
if (bb) { | |
if (this._storyDialogResources[za.id]) l.loadResources(this._storyDialogResources[za.id]); | |
this._openDialog(bb); | |
ja.bumpEntityKey('ticker_stories', 'flyouts.open'); | |
return; | |
} | |
if (!(za.id in this._fetchedStories)) this._uaCurStoryIDFetch = za.id; | |
this._fetchStory(za); | |
}, | |
handleRemoveStory: function() { | |
this._deactivateStory(true); | |
}, | |
_deactivateStory: function(za) { | |
if (this._activeStory === this._deactivatingStory) return; | |
this._deactivatingStory = this._activeStory; | |
if (this._dialog) { | |
if (za) { | |
this._dialog.enableBehavior(s); | |
} else this._dialog.disableBehavior(s); | |
this._dialog.hide(); | |
} | |
if (this._activeStory) { | |
o.removeClass(this._activeStory, 'tickerStoryActive'); | |
o.removeClass(this._activeStory, 'tickerStorySelected'); | |
o.removeClass(this._root, 'tickerChildSelected'); | |
} | |
this._dialog = this._selectedStory = this._activeStory = null; | |
this._cleanupInputFocusListener(); | |
this._cleanupContentResizeListener(); | |
this._deactivatingStory = null; | |
}, | |
_logUserAction: function(za, ab, event) { | |
ka(ab, za, event, 'FORCE'); | |
}, | |
_fetchStory: function(za) { | |
clearTimeout(this._fetchToken); | |
var ab = [], | |
bb = this._getInsertedStories(), | |
cb = bb.indexOf(za); | |
[-1, 0, 1].forEach(function(db) { | |
var eb = bb[cb + db]; | |
eb && ab.push(eb); | |
}, this); | |
this._fetchToken = setTimeout(this._fetchStories.bind(this, ab), 100); | |
}, | |
_fetchStories: function(za) { | |
var ab = [], | |
bb, cb = function(db) { | |
clearTimeout(bb); | |
za.forEach(function(eb) { | |
o.conditionClass(eb, 'tickerStoryFetching', db); | |
}); | |
}; | |
za = za.filter(function(db) { | |
if (db.id in this._fetchedStories) return false; | |
this._fetchedStories[db.id] = true; | |
var eb = this._getStoryDialogParams(db); | |
if (!eb) return false; | |
eb.uniq_id = db.getAttribute('id'); | |
eb.referrer = this._tickerSource; | |
ab.push(eb); | |
return true; | |
}, this); | |
if (!ab.length) return; | |
bb = this._setTimeout(cb.bind(null, true), 500); | |
new j('/ajax/feed/ticker/multi_story').setInitialHandler(this._handleDialogResponse.bind(this, ab)).setFinallyHandler(cb.bind(null, false)).setErrorHandler(qa).setData({ | |
stories: ab | |
}).setAllowCrossPageTransition(this._tickerInSidebarMode).send(); | |
}, | |
_handleDialogResponse: function(za, ab) { | |
if (ab && ab.resource_map) { | |
var bb = []; | |
for (var cb in ab.resource_map) { | |
var db = ab.resource_map[cb]; | |
if (db.type === 'css' && !db.permanent) bb.push(cb); | |
} | |
if (bb.length > 0) | |
for (var eb = 0; eb < za.length; eb++) this._storyDialogResources[za[eb].uniq_id] = bb; | |
} | |
}, | |
_tickerDeClicker: function(event) { | |
var za = event.getTarget(), | |
ab = v.byTag(za, 'a'), | |
bb = this._getStoryFromNode(za), | |
cb = this._getButtonFromNode(za); | |
if (bb && ab && !cb && o.hasClass(bb, 'tickerStoryClickable') && !o.hasClass(ab, 'tickerStoryAllowClick') && !this._storyIsHidden(bb)) ab.setAttribute('rel', 'ignore'); | |
var db = (event.button == 2), | |
eb = (event.type === 'keydown'), | |
fb = bb && this._getActionButtonFromStory(bb); | |
if (!db && fb && !eb) this._setClickedStory(bb); | |
}, | |
_handleMouseup: function(event) { | |
this._clearClickedStory(); | |
}, | |
_setClickedStory: function(za) { | |
this._clearClickedStory(); | |
o.addClass(za, 'tickerStoryClicked'); | |
this._clickedStory = za; | |
}, | |
_clearClickedStory: function() { | |
if (this._clickedStory) { | |
o.removeClass(this._clickedStory, 'tickerStoryClicked'); | |
this._clickedStory = null; | |
} | |
}, | |
_initInfiniteScrollListener: function() { | |
var za = this._getInsertedStories(); | |
if (this._storiesWithActions) | |
for (var ab = 0; ab < za.length; ab++) { | |
var bb = za[ab]; | |
if (o.hasClass(bb, 'tickerStoryWithButton')) this._storiesWithActions[bb.getAttribute('data-story-key')] = bb; | |
} | |
var cb = Math.max(0, za.length - this._autoloadStoryIndex); | |
this._infiniteScrollStory = za[cb]; | |
this._checkInfiniteScroll(); | |
}, | |
_checkInfiniteScroll: function() { | |
if (this._infiniteScrollStory) { | |
var za = ha.getElementPosition(this._infiniteScrollStory).y, | |
ab = ha.getElementPosition(this._container).y + ha.getElementDimensions(this._container).y; | |
if (za < ab) { | |
var bb = p.scry(this._root, '.tickerMorePager a')[0]; | |
if (bb) { | |
var cb = v.byClass(bb, 'stat_elem') || bb; | |
new j(bb.getAttribute('ajaxify')).setReadOnly(true).setRelativeTo(bb).setStatusElement(cb).setAllowCrossPageTransition(true).send(); | |
} | |
this._infiniteScrollStory = null; | |
this._autoloadStoryIndex = 5; | |
} | |
} | |
}, | |
_setFixed: function(za) { | |
if (!this._selectedStory) return; | |
var ab = this._getStoryDialog(this._selectedStory); | |
if (ab) { | |
ab.setFixed && ab.setFixed(za); | |
ab.updatePosition(); | |
} | |
}, | |
_setTimeout: function(za, ab) { | |
return setTimeout(za, ab, !this._tickerInSidebarMode); | |
}, | |
_scrollDialogToBottom: function() { | |
var za = this._dialog && this._dialog.getContent(), | |
ab = za && p.scry(za, '.uiScrollableAreaWrap')[0], | |
bb = ab && y.getInstance(ab); | |
bb && bb.scrollToBottom(); | |
}, | |
_redrawFlyout: function(za, ab) { | |
if (this._hasUFIUpdated) return; | |
var bb = this._dialog; | |
if (bb && bb.isShown() && ma(bb.getContent(), ab.form)) { | |
this._hasUFIUpdated = true; | |
this._updateDialogPosition(); | |
} | |
}, | |
_openDialog: function(za) { | |
if (!this._tickerInSidebarMode) o.addClass(za.getRoot(), 'tickerStoryOverlayOnTop'); | |
this._hasUFIUpdated = false; | |
var ab = ia.getScrollPosition(); | |
this._dialog = za.show(); | |
window.scrollTo(ab.x, ab.y); | |
this._updateDialogPosition(); | |
this._writeSwfFrame(za); | |
setTimeout(this._initCommentFocusListener.bind(this), 0); | |
setTimeout(this._initContentResizeListener.bind(this), 0); | |
this._stupidIE7VideoResizeHack(za); | |
}, | |
_stupidIE7VideoResizeHack: function(za) { | |
if (ga.ie() === 7) { | |
var ab = p.scry(za.getContent(), '.uiVideoThumb .img'); | |
ab.forEach(function(bb) { | |
aa.set(bb, 'width', ''); | |
}); | |
} | |
}, | |
_updateDialogPosition: function() { | |
var za = this._tickerInSidebarMode || !!v.byClass(this._root, 'fixed_elem'); | |
this._dialog.setFixed && this._dialog.setFixed(za); | |
this._adjustFlyoutContentHeight(); | |
this._dialog.updatePosition(); | |
}, | |
_writeSwfFrame: function(za) { | |
var ab = this._dialog && this._dialog.getContent(), | |
bb = p.scry(ab, '.swfObject')[0]; | |
if (!bb) return; | |
var cb = bb.getAttribute('data-swfid'); | |
if (cb && window[cb]) { | |
var db = window[cb]; | |
db.write(bb); | |
} | |
}, | |
_initCommentFocusListener: function() { | |
var za = this._dialog && this._dialog.getContent(), | |
ab = za && p.scry(za, '.tickerDialogFooter textarea')[0]; | |
if (!ab) return; | |
this._listeners.inputFocus = g.listen(ab, 'focus', this._scrollDialogToBottom.bind(this)); | |
}, | |
_cleanupInputFocusListener: function() { | |
if (this._listeners.inputFocus) { | |
this._listeners.inputFocus.remove(); | |
this._listeners.inputFocus = null; | |
} | |
}, | |
_initContentResizeListener: function() { | |
var za = this._dialog && this._dialog.getContent(); | |
if (!za) return; | |
this._listeners.contentResize = g.listen(za, 'click', function() { | |
setTimeout(this._dialog.updatePosition.bind(this._dialog), 0); | |
}.bind(this)); | |
}, | |
_cleanupContentResizeListener: function() { | |
if (this._listeners.contentResize) { | |
this._listeners.contentResize.remove(); | |
this._listeners.contentResize = null; | |
} | |
}, | |
_adjustFlyoutContentHeight: function() { | |
var za = this._dialog && this._dialog.getContent(), | |
ab = za && p.scry(za, '.uiScrollableAreaWrap')[0]; | |
if (!ab) return; | |
var bb = ha.getElementDimensions(ab), | |
cb = ha.getElementPosition(ab), | |
db = p.scry(ab, '.uiUfi .uiUfiComment'), | |
eb = p.scry(ab, "._12tg")[0], | |
fb = p.scry(ab, ".UFILikeSentence")[0], | |
gb = this.FLYOUT_MAX_HEIGHT; | |
if (eb || fb) { | |
var hb = this._getUfiItemAndTop(eb, fb), | |
ib = hb[0], | |
jb = hb[1]; | |
gb = Math.max(gb, this.FLYOUT_TARGET_HEIGHT_OFFSET + ab.scrollTop + jb + ib.offsetHeight - cb.y); | |
} | |
var kb = ha.getViewportDimensions().y - this.FLYOUT_VIEWPORT_PADDING; | |
gb = Math.min(gb, kb); | |
var lb = gb - this.FLYOUT_TARGET_HEIGHT_OFFSET; | |
for (var mb = 0; mb < db.length; mb++) { | |
var nb = db[mb], | |
ob = ha.getElementPosition(nb), | |
pb = ob.y - cb.y; | |
if (Math.abs(pb - lb) <= this.FLYOUT_OFFSET_THRESHOLD) { | |
lb = pb + this.FLYOUT_COMMENT_OFFSET; | |
break; | |
} | |
} | |
if (bb.y >= lb) { | |
aa.set(ab, 'height', lb + 'px'); | |
aa.set(ab, 'max-height', null); | |
} else { | |
aa.set(ab, 'max-height', gb + 'px'); | |
aa.set(ab, 'height', null); | |
} | |
}, | |
_getUfiItemAndTop: function(za, ab) { | |
var bb = (za && ha.getElementPosition(za).y) || 0, | |
cb = (ab && ha.getElementPosition(ab).y) || 0, | |
db = [za, bb + this.FLYOUT_ACTION_FOOTER_PADDING], | |
eb = [ab, cb]; | |
return bb > cb ? db : eb; | |
}, | |
_initObjectIDs: function() { | |
var za = this._getAllStories(); | |
for (var ab = za.length - 1; ab >= 0; ab--) { | |
var bb = za[ab].getAttribute('data-story-key'); | |
if (bb) { | |
this._objectIDs[bb] = true; | |
this._lastKStoriesInsert(za[ab]); | |
var cb = za[ab].getAttribute("data-dedupe-key"); | |
if (cb) this._dedupeKeys[cb] = true; | |
} | |
} | |
}, | |
_handleChatOpened: function() { | |
this._deactivateStory(); | |
}, | |
_handleChannelConnection: function() { | |
this._checkChannelConnection(); | |
}, | |
getNewest: function() { | |
return this._newest; | |
} | |
}); | |
e.exports = ya; | |
}, null); |
/*!CK:2110480670!*/ /*1438811695,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["de+3+"]); | |
} | |
__d("FullViewType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
ENTIRE_UNIT: 1 | |
}; | |
}, null); | |
__d("EmuController", ["AsyncRequest", "DataStore", "URI", "emptyFunction", "ge", "goURI"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
function m(n, o) { | |
"use strict"; | |
var p = k(n); | |
if (!p) return null; | |
this.impression = o; | |
this.containerId = n; | |
h.set(p, 'emuController', this); | |
return this; | |
} | |
m.prototype.event = function(n, o, p, q) { | |
"use strict"; | |
var r = { | |
eid: this.impression, | |
f: 0, | |
ui: this.containerId, | |
en: n, | |
a: 1 | |
}; | |
if (o) r.ed = JSON.stringify(o); | |
if (!q) q = j; | |
var s = new g().setURI(this.EVENT_HANDLER_PATH).setData(r).setErrorHandler(q); | |
if (p) s.setHandler(p); | |
s.send(); | |
}; | |
m.prototype.redirect = function() { | |
"use strict"; | |
var n = { | |
eid: this.impression, | |
f: 0, | |
ui: this.containerId, | |
en: this.CLICK, | |
a: 0, | |
sig: Math.floor(Math.random() * 65535) + 65536 | |
}, | |
o = new i(this.EVENT_HANDLER_PATH); | |
o.setQueryData(n); | |
l(o); | |
}; | |
m.fromContainer = function(n) { | |
"use strict"; | |
var o = k(n); | |
if (!o) return null; | |
return h.get(o, 'emuController'); | |
}; | |
m.getEventClass = function(n) { | |
"use strict"; | |
return "emuEvent" + String(n).trim(); | |
}; | |
Object.assign(m.prototype, { | |
EVENT_HANDLER_PATH: '/ajax/emu/end.php', | |
CLICK: 1, | |
FAN: "fad_fan" | |
}); | |
e.exports = m; | |
}, null); | |
__d("legacy:ad-units-base-js", ["EmuController"], function(a, b, c, d) { | |
b.__markCompiled && b.__markCompiled(); | |
a.EmuController = b('EmuController'); | |
}, 3); | |
__d("DesktopHscrollUnitEventConstants", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
HSCROLL_ITEM_INSERTED_EVENT: 'DesktopHScrollUnit/itemInserted', | |
HSCROLL_ITEM_SHOWN_EVENT: 'DesktopHScrollUnit/itemShown', | |
HSCROLL_ITEM_HIDE_EVENT: 'DesktopHScrollUnit/HideIndividualItem', | |
HSCROLL_ITEM_SCROLL_BEFORE_XOUT_EVENT: 'DesktopHScrollUnit/scrollItemBeforeXout', | |
HSCROLL_ITEM_UNHIDE_EVENT: 'DesktopHScrollUnit/unhideIndividualItem', | |
HSCROLL_LAST_ITEM_NFX_ACTION_TAKEN: 'logLastAdXout', | |
HSCROLL_PAGER_ITEM_HIDE_EVENT: 'onXoutIndividualItem' | |
}; | |
}, null); | |
__d("BlueBarMinWidthWithJewel", ["BanzaiODS", "BlueBar", "DOMQuery", "DOMDimensions", "Event", "Locale", "Style", "UITinyViewportAction", "Vector", "CSS", "csx", "cx", "queryThenMutateDOM"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) { | |
b.__markCompiled && b.__markCompiled(); | |
function t(u, v, w) { | |
if (u) { | |
if (w) { | |
m.set(u, 'height', '10000px'); | |
} else m.set(u, 'height', v - 15 + 'px'); | |
p.conditionClass(u, 'fixed_elem', !w); | |
} | |
} | |
f.init = function(u) { | |
var v = h.getNavRoot(), | |
w = i.scry(v, "._fmc")[0], | |
x = i.scry(document, "a._23nx")[0], | |
y = i.scry(document, "a._23ny")[0], | |
z = i.scry(document, "div._vox")[0], | |
aa = j.getViewportDimensions().height, | |
ba = j.getElementDimensions(v).height, | |
ca = false, | |
da = n.isTinyHeight(), | |
ea; | |
if (u && x && y) { | |
k.listen(x, 'click', function() { | |
p.removeClass(document.body, "_23nw"); | |
p.hide(x); | |
g.bumpEntityKey('tinyview.bookmark', 'show.click'); | |
}); | |
k.listen(y, 'click', function() { | |
p.addClass(document.body, "_23nw"); | |
p.show(x); | |
g.bumpEntityKey('tinyview.bookmark', 'hide.click'); | |
}); | |
} | |
t(z, aa - ba, da); | |
var fa = s.bind(null, function() { | |
var ga = j.getElementDimensions(v).width, | |
ha = j.getViewportDimensions().width; | |
aa = j.getViewportDimensions().height; | |
var ia = j.measureElementBox(v, 'width', true); | |
ca = n.isTinyWidth(); | |
da = n.isTinyHeight(); | |
var ja; | |
if (l.isRTL()) { | |
ja = -o.getElementPosition(v).x; | |
} else ja = 2 * o.getElementPosition(v).x + ga - ha; | |
var ka = ga - ja - ia; | |
if (ja > 0 && ka > 0) { | |
ea = ka + 'px'; | |
} else ea = ''; | |
}, function() { | |
m.set(w, 'width', ea); | |
if (u) { | |
p.conditionClass(document.body, "_23nw", ca); | |
if (x && y) { | |
if (ca) g.bumpEntityKey('tinyview.bookmark', 'icon.show'); | |
p.conditionShow(x, ca); | |
p.conditionShow(y, ca); | |
} | |
} | |
t(z, aa - ba, da); | |
}, 'BlueBarMinWidthWithJewel'); | |
k.listen(window, 'resize', fa); | |
fa(); | |
}; | |
}, null); | |
__d("BrowseClientEventLogger", ["Banzai"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = 'browse_client_event_session', | |
i = '21.', | |
j = { | |
logData: function(event, k, l, m) { | |
if (!event || !k) return; | |
m = m || {}; | |
m.event = event; | |
m.client_time = Math.floor(Date.now()); | |
m.session_id = k; | |
m.vertical = l; | |
this.allData = this.allData || {}; | |
this.processedSessions = this.processedSessions || []; | |
if (this.processedSessions.indexOf(k) !== -1) return; | |
if (!this.allData.sessionid) this.allData.sessionid = []; | |
this.allData.sessionid.push(m); | |
if (event === 'window_unloaded' || event === 'window_transition_to_LHC' || event === 'window_transition_to_home_click' || event === 'window_transition_to_fb_page') { | |
this._postBatch(this.allData.sessionid); | |
this.processedSessions.push(k); | |
} | |
}, | |
logClick: function(k) { | |
k.event = 'click'; | |
this.maybeLogVisiblityEvent(k, true); | |
}, | |
maybeLogClientViewEvent: function(k) { | |
k.event = 'client_view'; | |
this.maybeLogVisiblityEvent(k); | |
}, | |
maybeLogVisiblityEvent: function(k, l) { | |
if (!k || !k.xt || k.xt.indexOf(i) !== 0) return; | |
var event = k.event, | |
m = JSON.parse(k.xt.substring(3)); | |
if (l) m.click_type = k.click_type; | |
this.logData(event, m.session_id, m.vertical, m); | |
}, | |
_postBatch: function(k) { | |
g.post(h, k, { | |
delay: 0, | |
retry: true | |
}); | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("AdBlockerDetectorLogging", ["Banzai", "ErrorUtils", "getElementPosition"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = { | |
doAdBlockCheck: function(k, l) { | |
h.applyWithGuard(function() { | |
this._doAdBlockImgCheck(k, l, 0); | |
}.bind(this), this); | |
}, | |
_doAdBlockImgCheck: function(k, l, m) { | |
if (!l || !k) return; | |
var n = k.querySelectorAll('img'); | |
if (n.length > 0) { | |
var o = false; | |
for (var p = 0; p < n.length; p++) { | |
var q = n[p], | |
r = i(q); | |
if (r.width > 0 || r.height > 0) { | |
o = true; | |
break; | |
} | |
} | |
if (!o) { | |
var s = k, | |
t = 0; | |
while (s !== null) { | |
if (t++ > 50) break; | |
if (s.classList.contains('hidden_elem') || s.classList.contains('holdoutAdStory') || s.classList.contains('ego_ads_holdout')) return; | |
s = s.parentElement; | |
} | |
g.post('xtrackable:blocked_ad_view', { | |
token: l | |
}); | |
} | |
} else if (n.length === 0 && l.startsWith('7.')) | |
if (++m < 5) setTimeout((function() { | |
this._doAdBlockImgCheck(k, l, m); | |
}.bind(this)).bind(this), 2500); | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("Visibility", ["mixInEventEmitter"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h, i; | |
if (typeof document.hidden !== 'undefined') { | |
h = 'hidden'; | |
i = 'visibilitychange'; | |
} else if (typeof document.mozHidden !== 'undefined') { | |
h = 'mozHidden'; | |
i = 'mozvisibilitychange'; | |
} else if (typeof document.msHidden !== 'undefined') { | |
h = 'msHidden'; | |
i = 'msvisibilitychange'; | |
} else if (typeof document.webkitHidden !== 'undefined') { | |
h = 'webkitHidden'; | |
i = 'webkitvisibilitychange'; | |
} | |
function j() { | |
return h ? document[h] : false; | |
} | |
var k = { | |
HIDDEN: 'hidden', | |
VISIBLE: 'visible', | |
isHidden: j | |
}; | |
g(k, { | |
visible: true, | |
hidden: true | |
}); | |
if (document.addEventListener && i) document.addEventListener(i, function l() { | |
k.emit(j() ? k.HIDDEN : k.VISIBLE); | |
}); | |
e.exports = k; | |
}, null); | |
__d("FullViewLogger", ["Banzai", "SubscriptionsHandler", "URI"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
function j() { | |
"use strict"; | |
} | |
j.logFromViewableImpressionTracker = function(k) { | |
"use strict"; | |
var l = new j(); | |
l.subscribeToTrackerEvents(k); | |
}; | |
j.prototype.subscribeToTrackerEvents = function(k) { | |
"use strict"; | |
this.subscriptionsHandler = new h(); | |
this.subscriptionsHandler.addSubscriptions(k.addListener('full_view', this.onFullView, this)); | |
}; | |
j.prototype.onFullView = function(k) { | |
"use strict"; | |
if (this.$FullViewLogger0()) this.$FullViewLogger1(k); | |
var l = { | |
token: k.token, | |
fullViewType: k.fullViewType | |
}; | |
g.post('xtrackable:full_view', l); | |
if (this.$FullViewLogger0()) this.$FullViewLogger2(l); | |
}; | |
j.prototype.$FullViewLogger0 = function() { | |
"use strict"; | |
return 0; | |
}; | |
j.prototype.$FullViewLogger1 = function(k) { | |
"use strict"; | |
}; | |
j.prototype.$FullViewLogger2 = function(k) { | |
"use strict"; | |
}; | |
e.exports = j; | |
}, null); | |
__d("ViewableImpressionHeatmapLogger", ["Banzai"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
h.logFromViewableImpressionTracker = function(i, j) { | |
"use strict"; | |
var k = new h(j); | |
k.subscribeToTrackerEvents(i); | |
}; | |
function h(i) { | |
"use strict"; | |
this.loggingDurationMS = i; | |
this.trackingEntries = {}; | |
} | |
h.prototype.subscribeToTrackerEvents = function(i) { | |
"use strict"; | |
this.visibleSubscription = i.addListener('visible', this.onElementVisible, this); | |
this.hiddenSubscription = i.addListener('hidden', this.onElementHidden, this); | |
}; | |
h.prototype.onElementVisible = function(i) { | |
"use strict"; | |
var j = this.getCurrentTimestamp(), | |
k = this.trackingEntries[i.id]; | |
if (!k) { | |
k = this.createTrackingEntry(i); | |
this.beginTracking(i.id, k); | |
j = k.startedTrackingTS; | |
} | |
k.viewportProgressEvents.push({ | |
timestamp: j, | |
percentInViewport: i.percentInViewport.toFixed(2) | |
}); | |
}; | |
h.prototype.onElementHidden = function(i) { | |
"use strict"; | |
var j = this.getCurrentTimestamp(), | |
k = this.trackingEntries[i.id]; | |
if (!k) return; | |
k.viewportProgressEvents.push({ | |
timestamp: j, | |
percentInViewport: 0 | |
}); | |
}; | |
h.prototype.onTrackingCompleted = function(i) { | |
"use strict"; | |
var j = this.trackingEntries[i]; | |
j.viewportProgressEvents.push({ | |
timestamp: this.getCurrentTimestamp(), | |
percentInViewport: j.tracker.getPercentInViewport().toFixed(2) | |
}); | |
if (this.$ViewableImpressionHeatmapLogger0()) this.$ViewableImpressionHeatmapLogger1(i, j); | |
this.logToServer(j); | |
delete this.trackingEntries[i]; | |
}; | |
h.prototype.logToServer = function(i) { | |
"use strict"; | |
var j = i; | |
delete j.tracker; | |
g.post('xtrackable:heatmap', j); | |
}; | |
h.prototype.beginTracking = function(i, j) { | |
"use strict"; | |
this.trackingEntries[i] = j; | |
setTimeout(function() { | |
return this.onTrackingCompleted(i); | |
}.bind(this), this.loggingDurationMS); | |
}; | |
h.prototype.createTrackingEntry = function(i) { | |
"use strict"; | |
return { | |
tracker: i.tracker, | |
token: i.token, | |
startedTrackingTS: this.getCurrentTimestamp(), | |
viewportProgressEvents: [] | |
}; | |
}; | |
h.prototype.getCurrentTimestamp = function() { | |
"use strict"; | |
return (Date.now() / 1000).toFixed(2); | |
}; | |
h.prototype.$ViewableImpressionHeatmapLogger0 = function() { | |
"use strict"; | |
return 0; | |
}; | |
h.prototype.$ViewableImpressionHeatmapLogger1 = function(i, j) { | |
"use strict"; | |
var k = 'Completed tracking for id ' + i + ' token=' + j.token + ' startedTrackingTS=' + j.startedTrackingTS + '\n'; | |
j.viewportProgressEvents.forEach(function(l) { | |
k += '% in view: ' + l.percentInViewport + ' timestamp=' + l.timestamp + '\n'; | |
}); | |
}; | |
e.exports = h; | |
}, null); | |
__d("ViewableImpressionUtils", ["CSS", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = { | |
isHorizontallyOffscreen: function(j, k, l) { | |
var m = Math.max(k.x, 0), | |
n = Math.min(k.x + k.width, l.width); | |
return ((n - m) < k.width || g.hasClass(j, "desktop_hscroll_offscreen")); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("ViewableImpressionTracker", ["Banzai", "BrowseClientEventLogger", "DOM", "FullViewType", "getElementPosition", "getViewportDimensions", "mixInEventEmitter", "Style", "URI", "ViewableImpressionUtils"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
function q(r, s, t) { | |
"use strict"; | |
this.id = r; | |
this.element = s; | |
this.config = t; | |
this.iframe = null; | |
this.viewableTimeout = null; | |
this.clearSubsequentTimeout = null; | |
this.waitForSubsequent = false; | |
this.waitForLogged = false; | |
this.isNonViewableLogged = false; | |
this.isVisible = false; | |
this.banzaiLogged = false; | |
} | |
q.prototype.getID = function() { | |
"use strict"; | |
return this.id; | |
}; | |
q.prototype.getPercentInViewport = function() { | |
"use strict"; | |
var r = l(), | |
s = k(this.element); | |
return this.$ViewableImpressionTracker0(r, s); | |
}; | |
q.prototype.$ViewableImpressionTracker0 = function(r, s) { | |
"use strict"; | |
if (s.x < r.width && s.x + s.width > 0 && s.y < r.height && s.y + s.height > 0 && n.get(this.element, 'visibility') !== 'hidden' && n.get(this.element, 'opacity') !== '0') { | |
var t = Math.max(s.x, 0), | |
u = Math.min(s.x + s.width, r.width), | |
v = Math.max(s.y, 0), | |
w = Math.min(s.y + s.height, r.height); | |
if ((s.height * s.width) === 0) return 100; | |
if (this.config.require_horizontally_onscreen && p.isHorizontallyOffscreen(this.element, s, r)) return 0; | |
var x = 100 * (u - t) * (w - v) / (s.height * s.width); | |
return x; | |
} | |
return 0; | |
}; | |
q.prototype.$ViewableImpressionTracker1 = function(r, s) { | |
"use strict"; | |
if (n.get(this.element, 'visibility') === 'hidden' || n.get(this.element, 'opacity') === '0') return false; | |
var t = s.x + s.width, | |
u = s.y + s.height; | |
return t >= 0 && t <= r.width && u >= 0 && u <= r.height; | |
}; | |
q.prototype.$ViewableImpressionTracker2 = function(r, s) { | |
"use strict"; | |
if (this.hasEmittedFullViewEvent) return; | |
if (this.$ViewableImpressionTracker1(r, s)) { | |
this.emit('full_view', { | |
tracker: this, | |
id: this.getID(), | |
token: this.getToken(), | |
fullViewType: j.ENTIRE_UNIT | |
}); | |
this.hasEmittedFullViewEvent = true; | |
} | |
}; | |
q.prototype.onVisible = function() { | |
"use strict"; | |
this.isVisible = true; | |
var r = l(), | |
s = k(this.element), | |
t = this.$ViewableImpressionTracker0(r, s), | |
u = t > this.config.pixel_in_percentage; | |
this.emit('visible', { | |
tracker: this, | |
id: this.getID(), | |
token: this.getToken(), | |
percentInViewport: t | |
}); | |
this.$ViewableImpressionTracker2(r, s); | |
if (!u) { | |
this.$ViewableImpressionTracker3(); | |
return; | |
} | |
if (this.isLogged()) { | |
this.$ViewableImpressionTracker4(); | |
} else this.$ViewableImpressionTracker5(); | |
if (!this.waitForLogged && !this.isLogged()) { | |
this.waitForLogged = true; | |
this.viewableTimeout = setTimeout(function() { | |
this.waitForLogged = false; | |
var v = this.getPercentInViewport(), | |
w = v > this.config.pixel_in_percentage; | |
if (!w) { | |
this.$ViewableImpressionTracker6(); | |
return; | |
} | |
this.logImpression(1, {}); | |
this.$ViewableImpressionTracker4(); | |
}.bind(this), this.config.duration_in_ms); | |
} | |
}; | |
q.prototype.onHidden = function() { | |
"use strict"; | |
this.emit('hidden', { | |
id: this.getID(), | |
token: this.getToken() | |
}); | |
if (this.config.log_initial_nonviewable && !this.isLogged() && !this.isNonViewableLogged) { | |
this.logNonViewableImpression(); | |
} else if (!this.config.log_initial_nonviewable && !this.isLogged() && this.isVisible) this.logNonViewableImpression(); | |
this.isVisible = false; | |
if (this.waitForLogged) { | |
this.waitForLogged = false; | |
clearTimeout(this.viewableTimeout); | |
} | |
if (this.isLogged() && !this.waitForSubsequent && this.config.subsequent_gap_in_ms >= 0) { | |
this.waitForSubsequent = true; | |
this.clearSubsequentTimeout = setTimeout(function() { | |
this.waitForSubsequent = false; | |
this.reset(); | |
if (this.isVisible) this.onVisible(); | |
}.bind(this), this.config.subsequent_gap_in_ms); | |
} | |
this.$ViewableImpressionTracker6(); | |
}; | |
q.prototype.onRemoved = function() { | |
"use strict"; | |
this.isVisible = false; | |
}; | |
q.prototype.getToken = function() { | |
"use strict"; | |
return this.element.getAttribute('data-xt'); | |
}; | |
q.prototype.logImpression = function(r, s) { | |
"use strict"; | |
if (this.isLogged()) return; | |
var t = this.getToken(), | |
u = Math.floor(Date.now() / 1000), | |
v = { | |
xt: t, | |
isv: r, | |
cts: u | |
}; | |
if (g.isEnabled('xtrackable_clientview_batch') && this.config.should_batch) { | |
this.logWithBanzai(v); | |
} else this.logWithIFrame(Object.assign(v, s)); | |
}; | |
q.prototype.logNonViewableImpression = function() { | |
"use strict"; | |
if (this.config.nonviewableEnabled) { | |
var r = this.getToken(); | |
g.post('xtrackable:nonviewable', { | |
xt: r | |
}); | |
} | |
this.isNonViewableLogged = true; | |
}; | |
q.prototype.isLogged = function() { | |
"use strict"; | |
return this.iframe !== null || this.banzaiLogged; | |
}; | |
q.prototype.reset = function() { | |
"use strict"; | |
if (this.iframe) { | |
i.remove(this.iframe); | |
this.iframe = null; | |
} | |
if (this.banzaiLogged) this.banzaiLogged = false; | |
this.isNonViewableLogged = false; | |
this.isVisible = false; | |
this.waitForLogged = false; | |
this.waitForSubsequent = false; | |
}; | |
q.prototype.logWithBanzai = function(r) { | |
"use strict"; | |
this.banzaiLogged = true; | |
h.maybeLogClientViewEvent(r); | |
g.post('xtrackable:clientview_batch', r); | |
}; | |
q.prototype.logWithIFrame = function(r) { | |
"use strict"; | |
this.iframe = i.create('iframe', { | |
src: new o(this.config.impressionURL).addQueryData(r), | |
width: 0, | |
height: 0, | |
frameborder: 0, | |
scrolling: 'no', | |
className: 'fbEmuTracking' | |
}); | |
this.iframe.setAttribute('aria-hidden', 'true'); | |
i.appendContent(this.element, this.iframe); | |
}; | |
q.prototype.$ViewableImpressionTracker7 = function() { | |
"use strict"; | |
return 0; | |
}; | |
q.prototype.$ViewableImpressionTracker3 = function() { | |
"use strict"; | |
if (this.$ViewableImpressionTracker7()) { | |
n.set(this.element, 'background-color', '#abab9a'); | |
n.set(this.element, 'outline', '3px solid #abab9a'); | |
} | |
}; | |
q.prototype.$ViewableImpressionTracker5 = function() { | |
"use strict"; | |
if (this.$ViewableImpressionTracker7()) { | |
n.set(this.element, 'background-color', '#e4f70a'); | |
n.set(this.element, 'outline', '3px solid #e4f70a'); | |
} | |
}; | |
q.prototype.$ViewableImpressionTracker6 = function() { | |
"use strict"; | |
if (this.$ViewableImpressionTracker7()) { | |
n.set(this.element, 'background-color', null); | |
n.set(this.element, 'outline', null); | |
} | |
}; | |
q.prototype.$ViewableImpressionTracker4 = function() { | |
"use strict"; | |
if (this.$ViewableImpressionTracker7()) { | |
n.set(this.element, 'background-color', '#047515'); | |
n.set(this.element, 'outline', '3px solid #047515'); | |
} | |
}; | |
m(q, { | |
visible: true, | |
hidden: true, | |
full_view: true | |
}); | |
e.exports = q; | |
}, null); | |
__d("VisibilityTrackingHelper", ["Arbiter", "DesktopHscrollUnitEventConstants", "getViewportDimensions", "Event"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = { | |
getEventListeners: function(l) { | |
return [j.listen(document, 'DOMContentLoaded', l), j.listen(window, 'scroll', l), j.listen(window, 'resize', l), g.subscribe(h.HSCROLL_ITEM_SHOWN_EVENT, l)]; | |
}, | |
getViewportInfo: function() { | |
return i(); | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("VisibilityTracking", ["Banzai", "BrowseClientEventLogger", "ErrorUtils", "ScriptPath", "SubscriptionsHandler", "Visibility", "VisibilityTrackingHelper", "collectDataAttributes", "getElementPosition", "pageID", "throttle"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
var r = 'visibility_tracking', | |
s = '[data-vistracking]', | |
t = 500, | |
u = 50, | |
v = 50, | |
w = 50, | |
x = 50, | |
y = { | |
VISIBLE: 'visible', | |
HIDDEN: 'hidden' | |
}, | |
z = { | |
DEFAULT: 'default', | |
REMOVED: 'removed' | |
}, | |
aa = { | |
name: y.VISIBLE, | |
cause: z.DEFAULT | |
}, | |
ba = { | |
name: y.HIDDEN, | |
cause: z.DEFAULT | |
}, | |
ca = { | |
name: y.HIDDEN, | |
cause: z.REMOVED | |
}, | |
da = 0; | |
function ea(fa) { | |
"use strict"; | |
fa = fa || {}; | |
if (!fa.bypass_banzai_check && !g.isEnabled(r)) return; | |
this.visibleElementInfo = {}; | |
this.getDataFromConfig(fa); | |
l.addListener(l.VISIBLE, i.guard(this.fireEvent, 'VisibilityTracking:visible', this)); | |
if (!this.skipVisibilityHiddenEvents) l.addListener(l.HIDDEN, i.guard(this.clearAllVisibleElements, 'VisibilityTracking:hidden', this)); | |
j.subscribe(i.guard(this.updateVisibleElements, 'VisibilityTracking:scriptPath', this)); | |
g.subscribe(g.SHUTDOWN, i.guard(this.onUnload, 'VisibilityTracking:banzaiShutdown', this)); | |
this.fireEventCallback = q.acrossTransitions(i.guard(this.fireEvent, 'VisibilityTracking:fireEventCallback', this), this.timeout, this); | |
this.listeners = new k(); | |
m.getEventListeners(this.fireEventCallback).forEach(function(ga) { | |
this.listeners.addSubscriptions(ga); | |
}, this); | |
if (this.extraInit) i.applyWithGuard(this.extraInit.bind(this)); | |
} | |
ea.prototype.getDataFromConfig = function(fa) { | |
"use strict"; | |
this.config = fa; | |
this.root = fa.root || document.documentElement; | |
this.selector = fa.selector || s; | |
this.timeout = (typeof fa.timeout !== 'undefined') ? fa.timeout : t; | |
this.minOffsetVisibleFromBottom = (typeof fa.minOffsetVisibleFromBottom !== 'undefined') ? fa.minOffsetVisibleFromBottom : u; | |
this.minOffsetVisibleFromTop = (typeof fa.minOffsetVisibleFromTop !== 'undefined') ? fa.minOffsetVisibleFromTop : v; | |
this.minOffsetVisibleFromLeft = (typeof fa.minOffsetVisibleFromLeft !== 'undefined') ? fa.minOffsetVisibleFromLeft : w; | |
this.minOffsetVisibleFromRight = (typeof fa.minOffsetVisibleFromRight !== 'undefined') ? fa.minOffsetVisibleFromRight : x; | |
this.handleAllHiddenEvents = (typeof fa.handleAllHiddenEvents !== 'undefined') ? fa.handleAllHiddenEvents : false; | |
this.handleAllVisibleEvents = (typeof fa.handleAllVisibleEvents !== 'undefined') ? fa.handleAllVisibleEvents : false; | |
this.skipVisibilityHiddenEvents = (typeof fa.skipVisibilityHiddenEvents !== 'undefined') ? fa.skipVisibilityHiddenEvents : false; | |
this.cacheTrackedElements = (typeof fa.cacheTrackedElements !== 'undefined') ? fa.cacheTrackedElements : false; | |
}; | |
ea.prototype.getAllTrackedElements = function() { | |
"use strict"; | |
if (!this.allTrackedElements) { | |
this.allTrackedElements = {}; | |
if (this.root.querySelectorAll) { | |
var fa = this.root.querySelectorAll(this.selector); | |
for (var ga = 0; ga < fa.length; ga++) { | |
var ha = this.getElementID(fa[ga]); | |
this.allTrackedElements[ha] = fa[ga]; | |
} | |
} | |
} | |
return this.allTrackedElements; | |
}; | |
ea.prototype.refreshAllTrackedElements = function() { | |
"use strict"; | |
delete this.allTrackedElements; | |
return this.getAllTrackedElements(); | |
}; | |
ea.prototype.getDataToLog = function(fa) { | |
"use strict"; | |
var ga = Object.assign(n(fa, ['gt']).gt, { | |
client_time: Date.now() / 1000, | |
time_spent_id: p, | |
script_path: j.getScriptPath() | |
}); | |
return ga; | |
}; | |
ea.prototype.getElementID = function(fa) { | |
"use strict"; | |
var ga = fa.$VisibilityTracking0; | |
if (ga) return ga; | |
fa.$VisibilityTracking0 = ++da; | |
return da; | |
}; | |
ea.prototype.sendDataToLog = function(fa) { | |
"use strict"; | |
h.maybeLogVisiblityEvent(fa); | |
g.post(r, fa); | |
}; | |
ea.prototype.fireEvent = function() { | |
"use strict"; | |
var fa = this.cacheTrackedElements ? this.allTrackedElements : this.refreshAllTrackedElements(); | |
for (var ga in fa) { | |
var ha = fa[ga], | |
ia = m.getViewportInfo(), | |
ja = this.isVisible(ha, ia); | |
if (!ja && (ga in this.visibleElementInfo || this.handleAllHiddenEvents)) { | |
this.handleEvent(ha, ba); | |
} else if (ja && (!(ga in this.visibleElementInfo) || this.handleAllVisibleEvents)) this.handleEvent(ha, aa); | |
} | |
this.clearUntrackedVisibleElements(); | |
}; | |
ea.prototype.isVisible = function(fa, ga) { | |
"use strict"; | |
var ha = o(fa); | |
return (ha.x || ha.y || ha.width || ha.height) && (ha.y + ha.height >= this.minOffsetVisibleFromTop) && (ha.y <= ga.height - this.minOffsetVisibleFromBottom) && (ha.x + ha.width >= this.minOffsetVisibleFromLeft) && (ha.x <= ga.width - this.minOffsetVisibleFromRight); | |
}; | |
ea.prototype.handleEvent = function(fa, event) { | |
"use strict"; | |
var ga = this.getElementID(fa), | |
ha = this.getDataToLog(fa), | |
ia; | |
if (event.name === y.VISIBLE) { | |
var ja = Math.floor(Date.now() / 1000); | |
ia = p.concat(":", ja.toString(), ":", this.getElementID(fa).toString()); | |
this.visibleElementInfo[ga] = { | |
visibility_id: ia, | |
elem: fa | |
}; | |
} else if (event.name === y.HIDDEN) | |
if (ga in this.visibleElementInfo) { | |
ia = this.visibleElementInfo[ga].visibility_id; | |
delete this.visibleElementInfo[ga]; | |
} | |
this.sendDataToLog(Object.assign(ha, { | |
event: event.name, | |
visibility_id: ia | |
})); | |
}; | |
ea.prototype.clearUntrackedVisibleElements = function() { | |
"use strict"; | |
var fa = this.getAllTrackedElements(); | |
for (var ga in this.visibleElementInfo) | |
if (!(ga in fa)) { | |
var ha = this.visibleElementInfo[ga]; | |
if (ha.elem) this.handleEvent(ha.elem, ca); | |
} | |
}; | |
ea.prototype.clearAllVisibleElements = function() { | |
"use strict"; | |
var fa = this.getAllTrackedElements(); | |
for (var ga in fa) | |
if (ga in this.visibleElementInfo) this.handleEvent(fa[ga], ba); | |
this.clearUntrackedVisibleElements(); | |
}; | |
ea.prototype.updateVisibleElements = function() { | |
"use strict"; | |
this.clearAllVisibleElements(); | |
this.fireEvent(); | |
}; | |
ea.prototype.refreshAndFireEvent = function() { | |
"use strict"; | |
this.refreshAllTrackedElements(); | |
this.fireEventCallback(); | |
}; | |
ea.prototype.onUnload = function() { | |
"use strict"; | |
this.clearAllVisibleElements(); | |
if (this.listeners) { | |
this.listeners.release(); | |
this.listeners = null; | |
} | |
if (this.extraCleanup) i.applyWithGuard(this.extraCleanup.bind(this)); | |
}; | |
ea.init = function(fa) { | |
"use strict"; | |
new ea(fa); | |
}; | |
ea.EVENT = y; | |
ea.CAUSE = z; | |
e.exports = ea; | |
}, null); | |
__d("ViewableImpressionEventHandler", ["FullViewLogger", "ViewableImpressionHeatmapLogger", "ViewableImpressionTracker", "VisibilityTracking"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = 1; | |
for (var l in j) | |
if (j.hasOwnProperty(l)) n[l] = j[l]; | |
var m = j === null ? null : j.prototype; | |
n.prototype = Object.create(m); | |
n.prototype.constructor = n; | |
n.__superConstructor__ = j; | |
function n() { | |
"use strict"; | |
if (j !== null) j.apply(this, arguments); | |
} | |
n.prototype.extraInit = function() { | |
"use strict"; | |
this.impressionTrackers = {}; | |
}; | |
n.prototype.getDataFromConfig = function(o) { | |
"use strict"; | |
m.getDataFromConfig.call(this, o); | |
this.doHeatmapLogging = o.doHeatmapLogging; | |
this.heatmapLoggingDurationMS = o.heatmapLoggingDurationMS; | |
o.impressionURL = (o.impressionURL !== (void 0)) ? o.impressionURL : '/xti.php'; | |
o.nonviewableEnabled = (o.nonviewableEnabled !== (void 0)) ? o.nonviewableEnabled : false; | |
}; | |
n.prototype.getImpressionTracking = function(o) { | |
"use strict"; | |
var p = this.getElementID(o), | |
q = Object.assign({}, this.getConfigFromElement(o), this.config), | |
r = this.impressionTrackers[p]; | |
if (!r) { | |
r = new i(p, o, q); | |
this.impressionTrackers[p] = r; | |
if (this.doHeatmapLogging) h.logFromViewableImpressionTracker(r, this.heatmapLoggingDurationMS); | |
if (q.should_log_full_views) g.logFromViewableImpressionTracker(r); | |
} | |
return r; | |
}; | |
n.prototype.handleEvent = function(o, event) { | |
"use strict"; | |
var p = this.getImpressionTracking(o); | |
if (!p) return; | |
if (event.name === j.EVENT.VISIBLE) { | |
p.onVisible(); | |
if (!this.visibleElementInfo[p.getID()]) this.visibleElementInfo[p.getID()] = { | |
elem: o | |
}; | |
} else if (event.name === j.EVENT.HIDDEN) | |
if (event.cause === j.CAUSE.DEFAULT) { | |
p.onHidden(); | |
delete this.visibleElementInfo[p.getID()]; | |
} else if (event.cause === j.CAUSE.REMOVED) { | |
p.onRemoved(); | |
delete this.visibleElementInfo[p.getID()]; | |
delete this.impressionTrackers[p.getID()]; | |
} | |
}; | |
n.prototype.getConfigFromElement = function(o) { | |
"use strict"; | |
return JSON.parse(o.getAttribute('data-xt-vimp')); | |
}; | |
n.prototype.getElementID = function(o) { | |
"use strict"; | |
if (!o.getAttribute('id')) o.setAttribute('id', 'xt_uniq_' + k++); | |
return o.getAttribute('id'); | |
}; | |
e.exports = n; | |
}, null); | |
__d("legacy:async-signal", ["AsyncSignal"], function(a, b, c, d) { | |
b.__markCompiled && b.__markCompiled(); | |
a.AsyncSignal = b('AsyncSignal'); | |
}, 3); | |
__d("ViewableImpressionTracking", ["Arbiter", "DesktopHscrollUnitEventConstants", "ErrorUtils", "LitestandMessages", "Run", "ViewableImpressionEventHandler", "ViewableImpressionConfig"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = { | |
init: function() { | |
if (l.instance === (void 0)) { | |
l.instance = new l(m); | |
l.instance.listeners.addSubscriptions(g.subscribe([j.STORIES_INSERTED, 'AdsRefreshHandler/AdsLoaded', 'MPPInsights/ChartView', 'PhotoSnowliftAds/displayUnits', 'WebMessengerAdsControl/adjustAds', h.HSCROLL_ITEM_INSERTED_EVENT], i.guard(function() { | |
l.instance.refreshAndFireEvent(); | |
}, 'ViewableImpressionTracking'))); | |
} | |
k.onLoad(function() { | |
l.instance.refreshAndFireEvent(); | |
}); | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("MercuryLeftNav", ["Arbiter", "MessagingTag", "NavigationMessage", "MercuryThreadInformer", "MercuryUnreadState"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = b('MercuryThreadInformer').get(), | |
k = b('MercuryUnreadState').get(), | |
l = false; | |
function m() { | |
var o = k.getUnreadCount(h.INBOX); | |
g.inform(i.NAVIGATION_COUNT_UPDATE, { | |
key: 'inbox', | |
hide: true | |
}); | |
g.inform(i.NAVIGATION_COUNT_UPDATE, { | |
key: 'inbox', | |
count: o | |
}); | |
} | |
var n = { | |
bootstrap: function() { | |
if (l) return; | |
j.subscribe('unread-updated', m); | |
l = true; | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("EgoUnitSlideInsert", ["Animation", "CSS", "DataStore", "DOM", "Ease", "Event", "Parent", "TidyArbiterMixin", "cx", "tidyEvent"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = 'sliding', | |
r = "EgoSlider/End", | |
s = Object.assign({ | |
isSliding: function(t) { | |
return i.get(t, q); | |
}, | |
runAfterSlide: function(t, u) { | |
var v = p(s.subscribe(r, function(w, x) { | |
if (x === t) { | |
v && v.unsubscribe(); | |
u(); | |
} | |
})); | |
}, | |
registerSlide: function(t, u) { | |
l.listen(t, 'click', function(v) { | |
var w = m.byClass(v.getTarget(), "_5cl_"); | |
if (!w) return; | |
var x = m.byClass(t, 'ego_unit'), | |
y = 0, | |
z = m.byClass(x, 'ego_unit_container'), | |
aa = j.scry(z, '.ego_unit')[0]; | |
if (aa === x) | |
if (x.nextSibling) { | |
x.nextSibling.style.paddingTop = '0px'; | |
x.nextSibling.style.borderTop = '0px'; | |
} | |
h.addClass(x, "_5cl-"); | |
i.set(x, q, true); | |
new g(x).to('height', 0).to('padding-top', y).to('padding-bottom', 0).to('margin', 0).from('opacity', 1).to('opacity', 0).ease(k.circOut).duration(300).checkpoint(1, function() { | |
j.appendContent(z, x); | |
j.prependContent(x, u); | |
i.remove(x, q); | |
}).to('height', 12).to('opacity', 1).to('margin-bottom', 10).duration(0).checkpoint(2, function() { | |
s.inform(r, x); | |
}).go(); | |
}); | |
} | |
}, n); | |
e.exports = s; | |
}, null); | |
__d("NetEgo", ["Animation", "Arbiter", "csx", "CSS", "DOM", "EgoUnitSlideInsert", "PageLikeConstants", "Parent", "URI", "ge"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = { | |
setup: function(r) { | |
h.subscribe([m.LIKED, 'FriendRequest/sending'], function(s, t) { | |
if ((r == t.profile_id && t.origin == 'hovercard') || r == t.uid) { | |
var u = p(document.body, '.ego_unit_container'); | |
if (u) { | |
var v = k.scry(u, '.ego_unit'), | |
w = v.length; | |
for (var x = 0; x < w; x++) { | |
var y = v[x].getAttribute('data-ego-fbid'); | |
if (y == r) { | |
var z = k.scry(v[x], '.ego_action a')[0]; | |
if (z) z.click(); | |
break; | |
} | |
} | |
} | |
} | |
}); | |
}, | |
updateXids: function(r, s, t) { | |
if (r.length == 0 && s.length == 0) return; | |
var u = function(ea) { | |
return function(fa) { | |
var ga = fa.getAttribute(ea); | |
if (!ga) return false; | |
var ha = new o(ga).getQueryData(); | |
return !!ha.xids; | |
}; | |
}, | |
v = k.scry(document.body, '.ego_section a'); | |
v = v.filter(u('ajaxify')); | |
if (v.length == 0) return; | |
var w = new o(v[0].getAttribute('ajaxify')), | |
x = w.getQueryData(); | |
if (!x.xids) return; | |
var y = null; | |
try { | |
y = JSON.parse(x.xids); | |
} catch (z) { | |
return; | |
} | |
if (t) | |
for (var aa = 0; aa < r.length; ++aa) delete y[r[aa]]; | |
for (aa = 0; aa < s.length; ++aa) y[s[aa]] = 1; | |
var ba = JSON.stringify(y), | |
ca = function(ea, fa) { | |
w = new o(ea.getAttribute(fa)); | |
x = w.getQueryData(); | |
x.xids = ba; | |
w.setQueryData(x); | |
ea.setAttribute(fa, w.toString()); | |
}; | |
for (aa = 0; aa < v.length; ++aa) ca(v[aa], 'ajaxify'); | |
var da = k.scry(document.body, '.ego_unit form'); | |
da = da.filter(u('action')); | |
for (aa = 0; aa < da.length; ++aa) ca(da[aa], 'action'); | |
}, | |
replaceUnit: function(r, s, t, u) { | |
q.replaceUnitCheckParent(r, s, t, u, ''); | |
}, | |
addUnitsWithSeeMore: function(r, s, t) { | |
if (!t) j.hide(r); | |
var u = r.previousSibling; | |
u && s && k.appendContent(u, s); | |
}, | |
replaceUnitCheckParent: function(r, s, t, u, v) { | |
var w = n.byClass(r, 'ego_unit_container'); | |
if (w && l.isSliding(r)) { | |
var x = k.appendContent(w, s); | |
x.forEach(j.hide); | |
l.runAfterSlide(r, q._replaceUnitElement.bind(null, r, x, v)); | |
} else q._replaceUnit(r, s, t, u, v); | |
}, | |
_replaceUnit: function(r, s, t, u, v) { | |
var w = k.insertAfter(r, s); | |
w.forEach(j.hide); | |
if (u !== (void 0) && u !== null) { | |
setTimeout(function() { | |
q._replaceUnitFadeout(r, w, t, v); | |
}, u); | |
} else q._replaceUnitFadeout(r, w, t, v); | |
}, | |
_replaceUnitFadeout: function(r, s, t, u) { | |
if (t) { | |
new g(r).from('opacity', 1).to('opacity', 0).duration(t).checkpoint(1, function() { | |
q._replaceUnitElement(r, s, u); | |
}).go(); | |
} else q._replaceUnitElement(r, s, u); | |
}, | |
_replaceUnitElement: function(r, s, t) { | |
var u = j.hasClass(r, 'ego_unit') ? r.parentNode : null; | |
if (u && u.tagName === 'LI') u = k.scry(r.parentNode, '^ul')[0]; | |
k.remove(r); | |
if (s.length) s.forEach(j.show); | |
h.inform('netego_replacedUnit', { | |
serializedData: t, | |
numUnitsRemained: u.childNodes.length | |
}); | |
q.clearHeader(); | |
}, | |
clearHeader: function() { | |
var r = k.scry(document.body, '.ego_column'), | |
s = []; | |
for (var t = 0; t < r.length; ++t) s = s.concat(k.scry(r[t], '.uiHeader')); | |
for (t = 0; t < s.length; ++t) { | |
var u = s[t].nextSibling, | |
v = k.find(u, "._2xq"); | |
if (!v) v = u; | |
if (!v || v.childNodes.length === 0) { | |
k.remove(s[t]); | |
} else if (v.childNodes.length === 1) { | |
var w = v.childNodes[0]; | |
if (j.hasClass(w, 'ego_appended_units') && w.childNodes.length === 0) k.remove(s[t]); | |
} | |
} | |
} | |
}; | |
e.exports = q; | |
}, null); |
/*!CK:32568979!*/ /*1438875852,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["4++FI"]); | |
} | |
__d("CctaTestIDs", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
CCTA_VIEWER_UNIT_TESTID: "ccta_viewer_unit_testid", | |
CCTA_TYPE_SELECTOR_TESTID: "ccta_type_selector_testid", | |
CCTA_TYPE_SELECTOR_OPTION_TESTID_PREFIX: "ccta_type_selector_option_testid_", | |
CCTA_CANCEL_BUTTON_TESTID: "ccta_cancel_button_testid", | |
CCTA_SAVE_BUTTON_TESTID: "ccta_save_button_testid", | |
CCTA_WEB_URI_TESTID: "ccta_web_uri_testid", | |
CCTA_EDIT_MENU_TESTID: "ccta_edit_menu_testid", | |
CCTA_SWITCH_TO_APP_BUTTON_TESTID: "ccta_switch_to_app_button_testid", | |
CCTA_ANDROID_APPS_DROPDOWN_TESTID: "ccta_android_apps_dropdown_testid", | |
CCTA_ANDROID_APPS_DROPDOWN_WEBSITE_OPTION_TESTID: "ccta_android_apps_dropdown_website_option_testid", | |
CCTA_ANDROID_APPS_DROPDOWN_APP_OPTION_TESTID: "ccta_android_apps_dropdown_app_option_testid" | |
}; | |
}, null); | |
__d("CustomCallToActionConstants", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
WEB: "CUSTOM_CTA_PLATFORM_WEB", | |
IOS: "CUSTOM_CTA_PLATFORM_IOS", | |
ANDROID: "CUSTOM_CTA_PLATFORM_ANDROID", | |
PRIMARY_LINK: "customCTAEditPrimaryLink", | |
PRIMARY_LINK_TYPE: "customCTAEditPrimaryLinkType", | |
FALLBACK_LINK_TYPE: "customCTAEditFallbackLinkType", | |
FALLBACK_LINK: "customCTAEditFallbackLink", | |
APP_ID: "appID", | |
COVER_PHOTO_SURFACE: "coverPhoto", | |
HOVER_CARD_SURFACE: "hoverCard", | |
PAGE_PLUGIN_SURFACE: "pagePlugin", | |
ADMIN_MENU_TEST_LINK: "adminMenuTestLink", | |
SKIP_PROMOTION: "skip_promotion", | |
GK_OPENTABLE: "ccta_open_table", | |
GK_BYPASS: "pages_custom_cta_bypass", | |
GK_PID: "pages_custom_cta_pid_2", | |
GK_UID: "pages_custom_cta_uid", | |
GK_CONTEXTUAL_ROW_UID: "pages_custom_cta_contextual_row_uid", | |
GK_CONTEXTUAL_ROW_ADMIN_UID: "pages_custom_cta_contextual_row_admin_uid", | |
GK_FOLLOW_BUTTON_IN_LIKE_DROPDOWN: "pages_follow_button_in_like_dropdown", | |
GK_HOVER_CARD: "custom_cta_hover_card_uid", | |
GK_SHOW_IN_SPRINGBOARD_UID: "pages_custom_cta_show_in_springboard_uid", | |
GK_ADMIN_UID: "custom_cta_admin_uid", | |
GK_PROMOTION_ADMIN_UID: "custom_cta_promotion_admin_uid_2", | |
GK_CUSTOM_CTA_CALLOUT: "custom_cta_callout", | |
GK_SHOW_VIEWER_UNIT_IN_LOGGED_OUT_VIEW: "custom_cta_show_viewer_unit_when_logged_out", | |
NECTAR_APP_NAME: "custom_cta", | |
GK_CCTA_NEW_DIALOG: "ccta_new_dialog", | |
GK_CCTA_CHARITY_DONATE: "ccta_donate_now", | |
GK_CCTA_MESSENGER: "ccta_messenger", | |
GK_CCTA_PROMOTION_DIALOG: "ccta_promotion_dialog", | |
OPEN_APP_ID: 1, | |
OPEN_WEBSITE_ID: 2, | |
TEST_ID_LANDING_PAGE_UNIT: "ccta_landing_page_unit" | |
}; | |
}, null); | |
__d("PageCallToActionDestinationTypes", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
NONE: "NONE", | |
APP_DEEPLINK: "APP_DEEPLINK", | |
CALL_PAGE: "CALL_PAGE", | |
DONATE: "DONATE", | |
FACEBOOK_APP: "FACEBOOK_APP", | |
LEAD_GEN: "LEAD_GEN", | |
MESSENGER: "MESSENGER", | |
PHONE_CALL: "PHONE_CALL", | |
STORE_FRONT: "STORE_FRONT", | |
WEBSITE: "WEBSITE" | |
}; | |
}, null); | |
__d("UFILazyActorSelector.react", ["BootloadedComponent.react", "JSResource", "React", "ActorSelectorPlaceholder.react"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = i.createClass({ | |
displayName: "UFILazyActorSelector", | |
getInitialState: function() { | |
return { | |
initialized: false | |
}; | |
}, | |
_onActivate: function(l) { | |
this.setState({ | |
shouldFocus: l, | |
initialized: true | |
}); | |
}, | |
render: function() { | |
return this.state.initialized ? i.createElement(g, i.__spread({ | |
bootloadPlaceholder: i.createElement(j, null), | |
bootloadLoader: h('UFIActorSelector.react'), | |
focusOnInit: this.state.shouldFocus | |
}, this.props)) : i.createElement(j, { | |
onActivate: this._onActivate | |
}); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("XUIDialogConfirmButton.react", ["React", "XUIDialogButton.react", "fbt"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "XUIDialogConfirmButton", | |
render: function() { | |
return (g.createElement(h, g.__spread({}, this.props, { | |
action: "confirm", | |
label: i._("\u78ba\u8a8d") | |
}))); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("CustomCTAConstants", ["fbt", "CustomCallToActionConstants", "CustomCallToActionTypes"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = b('CustomCallToActionTypes').TYPES, | |
j = { | |
NO_DIALOG: 'CUSTOM_CTA_DIALOG_NONE', | |
DELETE_DIALOG: 'CUSTOM_CTA_DIALOG_DELETE', | |
EDIT_DIALOG: 'CUSTOM_CTA_DIALOG_EDIT', | |
PROMOTE_DIALOG: 'CUSTOM_CTA_DIALOG_PROMOTE', | |
UPDATE_ALERT_DIALOG: 'CUSTOM_CTA_DIALOG_UPDATE_ALERT', | |
OPEN_APP_ID: "1", | |
OPEN_WEBSITE_ID: "2", | |
SHOW_FLYOUT: 'SHOW_FLYOUT', | |
CREATE_DIALOG_WIDTH: 778, | |
CREATE_DIALOG_HEIGHT: 504, | |
PREVIEW_WIDTH: 436, | |
PREVIEW_HEIGHT: 416, | |
NEW_PREVIEW_WIDTH: 412, | |
NEW_PREVIEW_HEIGHT: 346, | |
SELECTOR_WIDTH: 194, | |
URI_TRUNCATE_LENGTH: 30, | |
WEBSITE_BAR_ITEM: 'Website', | |
IPHONE_BAR_ITEM: 'iPhone', | |
ANDROID_BAR_ITEM: 'Android', | |
CREATE_CTA_TYPE_OPTIONS: [i.BOOK_NOW, i.CONTACT_US, i.OPEN_APP, i.PLAY_NOW, i.SHOP_NOW, i.SIGN_UP, i.WATCH_NOW], | |
PLATFORM_TYPE: 'CUSTOM_CTA_PLATFORM_TYPE', | |
WEB: h.WEB, | |
IOS: h.IOS, | |
ANDROID: h.ANDROID, | |
APP_ID: h.APP_ID, | |
FALLBACK_LINK_TYPE: h.FALLBACK_LINK_TYPE, | |
FALLBACK_LINK: h.FALLBACK_LINK, | |
PRIMARY_LINK: h.PRIMARY_LINK, | |
PRIMARY_LINK_TYPE: h.PRIMARY_LINK_TYPE, | |
FALLBACK_INSTALL_APP: 'fallback_install_app', | |
FALLBACK_GO_TO_WEBSITE: 'fallback_go_to_website', | |
API_URL: 'https://graph.facebook.com/', | |
INSIGHTS_LABEL: g._("\u67e5\u770b\u6d1e\u5bdf\u5831\u544a"), | |
EDIT_LABEL: g._("\u7de8\u8f2f\u884c\u52d5\u547c\u7c72"), | |
DELETE_LABEL: g._("\u522a\u9664\u884c\u52d5\u547c\u7c72"), | |
TEST_LABEL: g._("\u524d\u5f80\u9023\u7d50\u2026\u2026"), | |
PROMOTE_LABEL: g._("\u63a8\u5ee3"), | |
EDIT_PROMOTION_LABEL: g._("\u7de8\u8f2f\u63a8\u5ee3"), | |
DELETE_DIALOG_TITLE: g._("\u522a\u9664\u884c\u52d5\u547c\u7c72\u6309\u9215"), | |
DELETE_DIALOG_MESSAGE: g._("\u78ba\u5b9a\u8981\u5f9e Facebook \u7c89\u7d72\u5c08\u9801\u522a\u9664\u884c\u52d5\u547c\u7c72\u6309\u9215\u55ce\uff1f"), | |
DELETE_DURING_PROMOTION_DIALOG_TITLE: g._("\u9019\u500b\u8b8a\u66f4\u6703\u7d50\u675f\u5ee3\u544a"), | |
DELETE_DURING_PROMOTION_DIALOG_MESSAGE: g._("\u4f60\u76ee\u524d\u6b63\u5728\u63a8\u5ee3\u9019\u500b\u884c\u52d5\u547c\u7c72\uff0c\u4e00\u65e6\u522a\u9664\uff0c\u5ee3\u544a\u4e5f\u6703\u7d50\u675f\u520a\u767b\u3002"), | |
UPDATE_DURING_PROMOTION_DIALOG_TITLE: g._("\u9019\u500b\u8b8a\u66f4\u6703\u5f71\u97ff\u4f60\u7684\u5ee3\u544a"), | |
UPDATE_DURING_PROMOTION_DIALOG_MESSAGE: g._("\u5982\u679c\u4f60\u5f9e\u9019\u88e1\u66f4\u65b0\u884c\u52d5\u547c\u7c72\uff0c\u5247\u76ee\u524d\u520a\u767b\u4e2d\u7684\u5ee3\u544a\u4e5f\u6703\u96a8\u4e4b\u66f4\u65b0\uff0c\u800c\u4e14\u6703\u9700\u8981\u91cd\u65b0\u7d93\u904e\u5be9\u67e5\u3002"), | |
WEBSITE_LABEL: g._("\u7db2\u7ad9"), | |
IPHONE_LABEL: g._("iPhone"), | |
ANDROID_LABEL: g._("Android"), | |
CREATE_LABEL: g._("\u5efa\u7acb\u884c\u52d5\u547c\u7c72"), | |
CREATE_TOOLTIP: g._("\u65b0\u589e\u6309\u9215\uff0c\u8b93\u7528\u6236\u5f9e\u4f60\u7684\u7c89\u7d72\u5c08\u9801\u63a1\u53d6\u96c6\u5ba2\u529b\u884c\u52d5\uff08\u4f8b\u5982\u8cfc\u7269\u6216\u8a3b\u518a\uff09"), | |
CREATE_DIALOG_TITLE: g._("\u65b0\u589e\u884c\u52d5\u547c\u7c72\u6309\u9215"), | |
CREATE_DIALOG_BODY_MESSAGE: g._("\u65b0\u589e\u6309\u9215\u5230\u4f60\u7684\u7c89\u7d72\u5c08\u9801\uff0c\u5c07\u7528\u6236\u76f4\u63a5\u5e36\u5f80\u4f60\u7684\u61c9\u7528\u7a0b\u5f0f\u6216\u7db2\u7ad9\u3002"), | |
CREATE_DIALOG_BODY_MESSAGE_IOS: g._("\u9078\u64c7\u7528\u6236\u9ede\u6309 iPhone \u6216 iPad \u7684\u6309\u9215\u6642\u6703\u524d\u5f80\u7684\u9801\u9762\u3002"), | |
CREATE_DIALOG_APPLINK_MESSAGE_IOS: g._("\u65b0\u589e\u4f60\u61c9\u7528\u7a0b\u5f0f\u7684 iOS \u6df1\u5c64\u9023\u7d50\u7db2\u5740\u3002"), | |
CREATE_DIALOG_APPLINK_MESSAGE_ANDROID: g._("\u65b0\u589e\u4f60\u61c9\u7528\u7a0b\u5f0f\u7684 Android \u6df1\u5c64\u9023\u7d50\u7db2\u5740\u3002"), | |
CREATE_DIALOG_BACKUP_LINK_MESSAGE: g._("\u8f38\u5165\u8981\u5bc4\u7d66\u672a\u5b89\u88dd\u8a72\u61c9\u7528\u7a0b\u5f0f\u4e4b\u7528\u6236\u7684\u9023\u7d50\u3002\u5982\u679c\u4fdd\u7559\u7a7a\u767d\uff0c\u5c31\u6703\u958b\u555f\u5728\u5148\u524d\u756b\u9762\u4e2d\u8f38\u5165\u7684\u7db2\u7ad9\u3002"), | |
CREATE_DIALOG_BODY_MESSAGE_ANDROID: g._("\u9078\u64c7\u7528\u6236\u5728 Android \u4e0a\u9ede\u6309\u6309\u9215\u5f8c\u524d\u5f80\u7684\u7db2\u9801\u3002"), | |
EDIT_SECTION_MESSAGE: g._("\u4ee5\u4e0b\u662f\u7528\u6236\u9ede\u64ca\u6216\u9ede\u6309\u4f60\u7684\u884c\u52d5\u547c\u7c72\u6309\u9215\u4e4b\u5f8c\u524d\u5f80\u7684\u76ee\u6a19\u7db2\u7ad9\u8207\u61c9\u7528\u7a0b\u5f0f\u9023\u7d50\uff1a"), | |
EDIT_SECTION_EXAMPLE: g._("\u8209\u4f8b\u4f86\u8aaa\uff0c\u4f60\u53ef\u80fd\u6703\u5e0c\u671b\u8b93\u4f7f\u7528\u884c\u52d5\u88dd\u7f6e\u7684\u7528\u6236\u524d\u5f80\u4f60\u7684\u61c9\u7528\u7a0b\u5f0f\uff0c\u6216\u662f\u8b93\u4f7f\u7528\u684c\u4e0a\u578b\u96fb\u8166\u7684\u7528\u6236\u524d\u5f80\u4f60\u7684\u7db2\u7ad9\u3002"), | |
CREATE_DIALOG_PACKAGE_NAME_MESSAGE_ANDROID: g._("\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f\u7684\u5957\u4ef6\u540d\u7a31"), | |
EDIT_SECTION_APP_LINK_HELP_MESSAGE: g._("\u6709\u627e\u4e0d\u5230\u7684\u61c9\u7528\u7a0b\u5f0f\u6216\u884c\u52d5\u7248\u7db2\u7ad9\u55ce\uff1f"), | |
CREATE_LOADING_MESSAGE: g._("\u6b63\u5728\u5c0b\u627e\u9023\u7d50\u5230\u4f60\u7c89\u7d72\u5c08\u9801\u7684\u7db2\u7ad9\u8207\u61c9\u7528\u7a0b\u5f0f\u2026\u2026"), | |
CREATE_SELECT_CTA_LABEL: g._("\u6309\u9215\u6a19\u7c64"), | |
CREATE_INVALID_WEB_LINK: g._("\u9023\u7d50\u6216\u7db2\u5740\u7121\u6548"), | |
CREATE_INVALID_PACKAGE_NAME: g._("\u5957\u4ef6\u540d\u7a31\u7121\u6548"), | |
CREATE_INVALID_APP_LINK: g._("\u61c9\u7528\u7a0b\u5f0f\u9023\u7d50\u7121\u6548"), | |
CREATE_IPHONE_DEEP_LINK_TEXT: g._("\u6211\u5011\u6703\u5728\u5b89\u88dd\u5f8c\u958b\u555f\u4e0a\u65b9\u9078\u64c7\u7684\u61c9\u7528\u7a0b\u5f0f"), | |
CREATE_ANDROID_DEEP_LINK_TEXT: g._("\u6211\u5011\u6703\u5728\u5b89\u88dd\u5f8c\u958b\u555f\u4e0a\u65b9\u9078\u64c7\u7684\u61c9\u7528\u7a0b\u5f0f"), | |
CREATE_INVALID_URL_LINK: g._("\u7db2\u5740\u9023\u7d50\u7121\u6548"), | |
EDIT_CARD_WEB_TITLE: g._("\u96fb\u8166"), | |
EDIT_CARD_IOS_TITLE: g._("iPhone \u6216\u5176\u4ed6 iOS \u88dd\u7f6e"), | |
EDIT_CARD_ANDROID_TITLE: g._("Android \u624b\u6a5f\u6216\u5e73\u677f\u96fb\u8166"), | |
EDIT_CARD_OTHER_M_TITLE: g._("\u5176\u4ed6\u667a\u6167\u578b\u624b\u6a5f"), | |
EDIT_LINK_TOOLTIP: g._("\u8b8a\u66f4\u6b64\u9023\u7d50\u7db2\u5740"), | |
WEB_LINK_INPUT_LABEL: g._("\u7db2\u7ad9"), | |
WEB_LINK_INPUT_PLACEHOLDER: g._("\u7bc4\u4f8b\uff1a{url}", [g.param("url", 'www.mywebsite.com')]), | |
MOBILE_LINK_INPUT_LABEL: g._("\u624b\u6a5f\u7248\u7db2\u7ad9"), | |
APP_LINK_INPUT_LABEL: g._("\u61c9\u7528\u7a0b\u5f0f\u9023\u7d50"), | |
APP_LINK_INPUT_LABEL_TOOLTIP: g._("\u9019\u662f\u7528\u6236\u9ede\u6309\u6216\u9ede\u64ca\u4f60\u7684\u884c\u52d5\u547c\u7c72\u6309\u9215\u5f8c\u6703\u524d\u5f80\u7684\u9023\u7d50\u7db2\u5740"), | |
APP_LINK_INPUT_PLACEHOLDER: g._("\u8f38\u5165\u4f60\u7684\u61c9\u7528\u7a0b\u5f0f\u9023\u7d50"), | |
APP_DESTINATION_SELECTOR_LABEL: g._("\u76ee\u6a19\u7db2\u9801"), | |
APP_DESTINATION_SELECTOR_LABEL_TOOLTIP: g._("\u9078\u64c7\u4f60\u5e0c\u671b\u7528\u6236\u5728\u9ede\u6309\u6216\u9ede\u64ca\u4f60\u7684\u884c\u52d5\u547c\u7c72\u6309\u9215\u5f8c\u524d\u5f80\u7684\u76ee\u6a19\u7db2\u9801\u985e\u578b"), | |
FALLBACK_CTA_SELECTOR_LABEL: g._("\u5099\u7528"), | |
FALLBACK_CTA_SELECTOR_LABEL_TOOLTIP: g._("\u8acb\u9078\u64c7\u4f60\u5e0c\u671b\u7528\u6236\u5728\u9ede\u6309\u6216\u9ede\u64ca\u4f60\u7684\u884c\u52d5\u547c\u7c72\u6309\u9215\u5f8c\u524d\u5f80\u7684\u76ee\u6a19\u7db2\u9801\u985e\u578b\uff08\u5982\u679c\u4ed6\u5011\u5c1a\u672a\u8a3b\u518a\u6216\u5b89\u88dd\u4f60\u7684\u61c9\u7528\u7a0b\u5f0f\uff09"), | |
FALLBACK_LINK_INPUT_LABEL: g._("\u5099\u7528\u7db2\u5740"), | |
FALLBACK_LINK_INPUT_LABEL_TOOLTIP: g._("\u5982\u679c\u7528\u6236\u5c1a\u672a\u8a3b\u518a\u6216\u5b89\u88dd\u4f60\u7684\u61c9\u7528\u7a0b\u5f0f\uff0c\u9019\u5c31\u662f\u4ed6\u5011\u9ede\u6309\u6216\u9ede\u64ca\u4f60\u7684\u884c\u52d5\u547c\u7c72\u6309\u9215\u5f8c\u6703\u524d\u5f80\u7684\u9023\u7d50\u7db2\u5740"), | |
STORE_ID_LABEL: g._("\u5546\u5e97\u7de8\u865f"), | |
STORE_ID_TOOLTIP: g._("Apple Store \u6216 Google Play \u5546\u5e97\u7684\u61c9\u7528\u7a0b\u5f0f\u7de8\u865f"), | |
GO_TO_WEBSITE_LABEL: g._("\u524d\u5f80\u7db2\u7ad9"), | |
PACKAGE_NAME_LABEL: g._("\u5957\u4ef6\u540d\u7a31"), | |
REVIEW_DESTINATION_LINKS_TITLE: g._("\u5be9\u67e5\u6309\u9215\u76ee\u6a19\u7db2\u9801\u9023\u7d50"), | |
CREATE_CALL_TO_ACTION_WEBSITE: g._("\u5efa\u7acb\u884c\u52d5\u547c\u7c72\u6309\u9215"), | |
EDIT_CALL_TO_ACTION_WEBSITE: g._("\u7de8\u8f2f\u884c\u52d5\u547c\u7c72\u6309\u9215"), | |
CREATE_CALL_TO_ACTION_IPHONE: g._("\u70ba\u4f7f\u7528 iOS \u7684\u7528\u6236\u9078\u64c7\u76ee\u6a19\u7db2\u9801"), | |
CREATE_CALL_TO_ACTION_ANDROID: g._("\u70ba\u4f7f\u7528 Android \u7684\u7528\u6236\u9078\u64c7\u76ee\u6a19\u7db2\u5740"), | |
CREATE_CALL_TO_ACTION_IPAD: g._("\u70ba\u4f7f\u7528 iPad \u7684\u7528\u6236\u9078\u64c7\u76ee\u6a19\u7db2\u9801"), | |
ACTION_SELECTOR_LABEL: g._("\u9078\u64c7\u6309\u9215"), | |
OPTIONAL_LABEL: g._("\u9078\u586b"), | |
IOS_SECTION_TITLE: g._("iOS \u76ee\u6a19\u7db2\u9801"), | |
ANDROID_SECTION_TITLE: g._("Android \u76ee\u6a19\u7db2\u9801"), | |
BACKUP_LINK_LABEL: g._("\u5099\u7528\u76ee\u6a19\u7db2\u9801"), | |
DEEPLINK_LEARN_MORE_LABEL: g._("\u77ad\u89e3\u5982\u4f55\u8a2d\u5b9a\u6df1\u5c64\u9023\u7d50"), | |
SELECTOR_OPTION_WEBSITE: g._("\u7db2\u7ad9"), | |
SELECTOR_OPTION_APP: g._("\u61c9\u7528\u7a0b\u5f0f"), | |
LEGEND_KEY_ORGANIC: g._("\u81ea\u4e3b"), | |
LEGEND_KEY_PAID: g._("\u5df2\u4ed8\u8cbb"), | |
THIS_WEEK_CLICK_LABEL: g._("\u672c\u9031\u9ede\u64ca\u6b21\u6578") | |
}; | |
e.exports = j; | |
}, null); | |
__d("CustomCTALogger", ["Banzai"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
logVital: function(i) { | |
g.post('page_custom_cta_logger', i, g.VITAL); | |
}, | |
log: function(i) { | |
g.post('page_custom_cta_logger', i); | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("PageContentTabLoadingDialog", ["React", "DOM", "XUIDialog.react", "XUIDialogBody.react", "XUISpinner.react", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = g.createClass({ | |
displayName: "PageContentTabLoadingDialogComponent", | |
getInitialState: function() { | |
return { | |
shown: false | |
}; | |
}, | |
render: function() { | |
return (g.createElement(i, { | |
width: 300, | |
shown: this.state.shown, | |
layerHideOnBlur: false | |
}, g.createElement(j, { | |
className: "_5xp9" | |
}, g.createElement(k, { | |
background: "light", | |
className: "_5xpe", | |
size: "large" | |
})))); | |
}, | |
show: function() { | |
this.setState({ | |
shown: true | |
}); | |
}, | |
hide: function() { | |
this.setState({ | |
shown: false | |
}); | |
} | |
}), | |
n = { | |
show: function() { | |
if (!this._dialog) this._dialog = g.render(g.createElement(m, null), h.create('div')); | |
this._dialog.show(); | |
}, | |
hide: function() { | |
this._dialog && this._dialog.hide(); | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("CustomCTAUtils", ["fbt", "AdsCallToActionTypes", "AsyncRequest", "CctaTestIDs", "CustomCTAConstants", "Image.react", "PageContentTabLoadingDialog", "React", "XUISelector.react", "CustomCallToActionTypes"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) { | |
b.__markCompiled && b.__markCompiled(); | |
var p = b('CustomCallToActionTypes').ICONS, | |
q = b('CustomCallToActionTypes').LABELS, | |
r = b('CustomCallToActionTypes').MOBILE_ICONS, | |
s = b('CustomCallToActionTypes').TYPES, | |
t = b('CustomCallToActionTypes').TYPES, | |
u = o.Option, | |
v = { | |
executeCallToAction: function(w, x) { | |
if (w === t.CHARITY_DONATE) { | |
m.show(); | |
new i(x).setFinallyHandler(function(y) { | |
m.hide(); | |
}).send(); | |
} else window.open(x); | |
}, | |
getFallbackSelectorOptions: function() { | |
var w = []; | |
w.push(n.createElement(u, { | |
value: k.FALLBACK_GO_TO_WEBSITE | |
}, v.getFallbackLabel(k.FALLBACK_GO_TO_WEBSITE))); | |
w.push(n.createElement(u, { | |
value: k.FALLBACK_INSTALL_APP | |
}, v.getFallbackLabel(k.FALLBACK_INSTALL_APP))); | |
return w; | |
}, | |
getCallToActionSelectorOptions: function(w) { | |
var x = []; | |
w.forEach(function(y) { | |
x.push(n.createElement(u, { | |
"data-testid": j.CCTA_TYPE_SELECTOR_OPTION_TESTID_PREFIX + y, | |
key: y, | |
value: y, | |
icon: n.createElement(l, { | |
src: v.getCallToActionIcon(y) | |
}) | |
}, v.getCallToActionLabel(y))); | |
}); | |
return x; | |
}, | |
getFallbackLabel: function(w) { | |
switch (w) { | |
case k.FALLBACK_INSTALL_APP: | |
return (g._("\u7acb\u5373\u5b89\u88dd")); | |
case k.FALLBACK_GO_TO_WEBSITE: | |
return (g._("\u524d\u5f80\u7db2\u7ad9")); | |
} | |
return null; | |
}, | |
getCallToActionLabel: function(w) { | |
return q[w]; | |
}, | |
getCallToActionMobileIcon: function(w) { | |
return r[w]; | |
}, | |
getCallToActionIcon: function(w) { | |
return p[w]; | |
}, | |
getTruncatedURI: function(w) { | |
if (!w || w.length < k.URI_TRUNCATE_LENGTH) return w; | |
return w.substr(0, k.URI_TRUNCATE_LENGTH) + '...'; | |
}, | |
getAdsCallToActionType: function(w) { | |
switch (w) { | |
case s.BOOK_NOW: | |
return h.TYPES.BOOK_TRAVEL.name; | |
case s.OPEN_APP: | |
return h.TYPES.USE_APP.name; | |
case s.PLAY_NOW: | |
return h.TYPES.PLAY_GAME.name; | |
case s.SHOP_NOW: | |
return h.TYPES.SHOP_NOW.name; | |
case s.SIGN_UP: | |
return h.TYPES.SIGN_UP.name; | |
case s.WATCH_NOW: | |
return h.TYPES.WATCH_VIDEO.name; | |
default: | |
return ''; | |
} | |
} | |
}; | |
e.exports = v; | |
}, null); | |
__d("PageCallToActionOpenTableDialog.react", ["LayerHideOnBlur", "React", "XUIDialog.react", "XUIDialogBody.react", "XUIDialogCancelButton.react", "XUIDialogConfirmButton.react", "XUIDialogFooter.react"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var n = h.createClass({ | |
displayName: "PageCallToActionOpenTableDialog", | |
render: function() { | |
return (h.createElement(i, { | |
behaviors: { | |
LayerHideOnBlur: g | |
}, | |
shown: true, | |
width: 400 | |
}, h.createElement(j, null), h.createElement(m, null, h.createElement(k, null), h.createElement(l, null)))); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("PageCallToActionViewerUnitMixin", ["AsyncRequest", "DOM", "PageCallToActionDestinationTypes", "PageCallToActionOpenTableDialog.react", "PageContentTabLoadingDialog", "React", "ReactLayeredComponentMixin", "XUIDialog.react", "XUIDialogBody.react", "XUIDialogButton.react", "XUIDialogCancelButton.react", "XUIDialogFooter.react", "XUIDialogTitle.react", "XUIText.react", "fbt", "CustomCallToActionTypes"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var v = b('CustomCallToActionTypes').CONFIGS, | |
w = l, | |
x = w.PropTypes, | |
y = { | |
mixins: [m], | |
propTypes: { | |
callToActionType: x.string.isRequired, | |
url: x.string.isRequired | |
}, | |
getInitialState: function() { | |
var z = v[this.props.callToActionType]; | |
return { | |
confirmDialog: z.confirm_dialog, | |
showConfirmDialog: false, | |
destinationTypes: z.destination_types | |
}; | |
}, | |
renderLayers: function() { | |
if (!this.state.confirmDialog) return {}; | |
return { | |
confirmDialog: l.createElement(n, { | |
onToggle: this._onConfirmDialogToggle, | |
shown: this.state.showConfirmDialog, | |
width: 400 | |
}, l.createElement(s, null, this.state.confirmDialog.title), l.createElement(o, null, l.createElement("div", null, l.createElement(t, { | |
size: "xlarge" | |
}, this.state.confirmDialog.message)), l.createElement("p", null), l.createElement("div", null, l.createElement(t, { | |
size: "small" | |
}, this.state.confirmDialog.subMessage))), l.createElement(r, null, l.createElement(q, null), l.createElement(p, { | |
action: "button", | |
label: this.state.confirmDialog.confirmButtonLabel ? this.state.confirmDialog.confirmButtonLabel : u._("\u7e7c\u7e8c"), | |
onClick: this._executeCallToAction, | |
use: "confirm" | |
}))) | |
}; | |
}, | |
_onClick: function() { | |
if (this.state.confirmDialog) { | |
this.setState({ | |
showConfirmDialog: true | |
}); | |
} else this._executeCallToAction(); | |
}, | |
_onConfirmDialogToggle: function(z) { | |
this.setState({ | |
showConfirmDialog: z | |
}); | |
}, | |
_executeCallToAction: function() { | |
this.setState({ | |
showConfirmDialog: false | |
}); | |
if (this.state.destinationTypes.indexOf(i.DONATE) >= 0) { | |
k.show(); | |
new g(this.props.url).setFinallyHandler(function(z) { | |
k.hide(); | |
}).send(); | |
return; | |
} | |
if (this.state.destinationTypes.indexOf(i.WEBSITE) >= 0) { | |
window.open(this.props.url); | |
return; | |
} | |
if (!this._dialogAnchor) this._dialogAnchor = h.create('div'); | |
l.render(l.createElement(j, null), this._dialogAnchor); | |
} | |
}; | |
e.exports = y; | |
}, null); | |
__d("CustomCTAViewerUnit.react", ["CctaTestIDs", "CustomCTALogger", "CustomCTAUtils", "PageCallToActionViewerUnitMixin", "PagesEventType", "React", "Image.react", "XUIButton.react"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var o = l, | |
p = o.PropTypes, | |
q = l.createClass({ | |
displayName: "CustomCTAViewerUnit", | |
mixins: [j], | |
propTypes: { | |
borderShade: p.string, | |
cctaID: p.string.isRequired, | |
depressed: p.bool, | |
pageID: p.string.isRequired, | |
size: p.string, | |
surface: p.string.isRequired, | |
userID: p.string.isRequired | |
}, | |
onButtonClick: function() { | |
this._onClick(); | |
h.log({ | |
ccta_id: this.props.cctaID, | |
ccta_type: this.props.callToActionType, | |
event_type: k.CUSTOM_CTA_CLICK_VIEWER_UNIT, | |
page_id: this.props.pageID, | |
surface: this.props.surface, | |
target_url: this.props.url, | |
user_id: this.props.userID | |
}); | |
}, | |
getDefaultProps: function() { | |
return { | |
size: "large", | |
borderShade: "dark" | |
}; | |
}, | |
render: function() { | |
var r = this.props.callToActionType; | |
return (l.createElement(n, { | |
"data-testid": g.CCTA_VIEWER_UNIT_TESTID, | |
borderShade: this.props.borderShade, | |
depressed: this.props.depressed, | |
image: l.createElement(m, { | |
src: i.getCallToActionIcon(r) | |
}), | |
label: i.getCallToActionLabel(r), | |
onClick: this.onButtonClick, | |
size: this.props.size | |
})); | |
} | |
}); | |
e.exports = q; | |
}, null); |
/*!CK:4081038614!*/ /*1438149219,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["X6J3+"]); | |
} | |
__d("htmlize", ["htmlSpecialChars"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i) { | |
return g(i).replace(/\r\n|[\r\n]/g, '<br/>'); | |
} | |
e.exports = h; | |
}, null); | |
__d("PluginFlyout", ["Arbiter", "Button", "CSS", "DOM", "DOMEvent", "DOMEventListener", "Form", "Plugin", "TextAreaControl", "csx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = g.SUBSCRIBE_NEW, | |
r = g.subscribe, | |
s = g.inform, | |
t = function(v, w) { | |
return l.add(v, 'click', w); | |
}; | |
function u(v, w, x) { | |
var y = this, | |
z = r(n.CONNECT, function(event, aa) { | |
g.unsubscribe(z); | |
y.init(v, w, x); | |
y.connect(event, aa); | |
}, q); | |
r(n.DIALOG, function() { | |
y.init(v, w, x); | |
y.toggle(); | |
}, q); | |
} | |
Object.assign(u.prototype, { | |
init: function(v, w, x) { | |
if (this.initialized) return; | |
this.initialized = true; | |
j.appendContent(v, JSON.parse(x)); | |
var y = j.find(v, 'form'), | |
z = j.find(y, "._56zw"), | |
aa = j.find(y, "._56zx"), | |
ba = j.find(y, "._42x4"), | |
ca = o.getInstance(ba); | |
l.add(ba, 'keyup', function(ga) { | |
h.setEnabled(z, !!ca.getValue()); | |
}); | |
l.add(y, 'submit', function(ga) { | |
new k(ga).kill(); | |
m.bootstrap(y); | |
}); | |
var da = (w === 'tiny') ? j.find(document.body, '.pluginPostFlyoutPrompt') : null; | |
this.flyout = v; | |
this.form = y; | |
this.post_button = z; | |
this.prompt = da; | |
var ea = this.hide.bind(this), | |
fa = this.show.bind(this); | |
t(aa, function(ga) { | |
new k(ga).kill(); | |
ea(); | |
}); | |
if (da) t(da, function(ga) { | |
new k(ga).kill(); | |
fa(); | |
}); | |
r(n.CONNECT, this.connect.bind(this), q); | |
r(n.DISCONNECT, function() { | |
ea(); | |
}, q); | |
r(u.SUCCESS, function() { | |
ea(); | |
if (da) i.hide(da); | |
}, q); | |
r(n.ERROR, function(event, ga) { | |
if (ga.action !== 'comment') return; | |
j.setContent(j.find(y, "._56zy"), ga.content); | |
i.hide(z); | |
}, q); | |
}, | |
connect: function(event, v) { | |
if (v.crossFrame) return; | |
if (this.prompt) return i.show(this.prompt); | |
if (!v.story_fbid) this.show(); | |
}, | |
show: function() { | |
this.shown = true; | |
i.show(this.flyout); | |
i.show(this.post_button); | |
this.form.comment.focus(); | |
s(u.SHOW); | |
}, | |
hide: function() { | |
this.shown = false; | |
i.hide(this.flyout); | |
s(u.HIDE); | |
}, | |
toggle: function() { | |
if (this.shown) { | |
this.hide(); | |
} else this.show(); | |
} | |
}); | |
Object.assign(u, { | |
SUCCESS: 'platform/plugins/flyout/success', | |
SHOW: 'platform/plugins/flyout/show', | |
HIDE: 'platform/plugins/flyout/hide', | |
success: function() { | |
s(u.SUCCESS); | |
} | |
}); | |
e.exports = u; | |
}, null); | |
__d("PluginFlyoutDialog", ["Arbiter", "DOMEvent", "DOMEventListener", "PluginFlyout"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
function k(l, m, n) { | |
this.parent = new j(l, m, n); | |
this.flyout = l; | |
g.subscribe(j.SHOW, this.show.bind(this), g.SUBSCRIBE_NEW); | |
} | |
Object.assign(k.prototype, { | |
show: function() { | |
if (this.subscribed) return; | |
this.subscribed = 1; | |
var l = window.ServerJSAsyncLoader; | |
l && l.ondemandjs && l.run(l.ondemandjs); | |
i.add(this.flyout.parentNode, 'click', (function(m) { | |
m = new h(m); | |
if (m.target === this.flyout.parentNode) { | |
m.kill(); | |
this.parent.hide(); | |
} | |
}).bind(this)); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("MentionsInputMatchers", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = ['@', '\\uff20'].join(''), | |
h = ['#', '\\uFF03'].join(''), | |
i = '.,+*?$|#{}()\\^\\-\\[\\]\\\\\/!%\'"~=<>_:;\n\r', | |
j = i.replace('#', '') + '&'; | |
function k(n, o) { | |
"use strict"; | |
this.$Matchers0 = n; | |
this.$Matchers1 = o; | |
this.$Matchers2(); | |
} | |
k.prototype.$Matchers2 = function() { | |
"use strict"; | |
var n = this.$Matchers3(this.$Matchers1), | |
o = this.$Matchers4(this.$Matchers0, this.$Matchers1), | |
p = this.$Matchers5(this.$Matchers0, o), | |
q = this.$Matchers6(n, p), | |
r = this.$Matchers7(n); | |
this.$Matchers8 = new RegExp('[' + this.$Matchers0 + ']$'); | |
this.$Matchers9 = new RegExp(p + '$'); | |
this.$Matchersa = new RegExp(r + '$'); | |
this.$Matchersb = new RegExp(q + '$'); | |
this.$Matchersc = new RegExp('[' + h + ']'); | |
}; | |
k.prototype.$Matchers3 = function(n) { | |
"use strict"; | |
return '\\b[A-Z][^ A-Z' + n + ']'; | |
}; | |
k.prototype.$Matchers4 = function(n, o) { | |
"use strict"; | |
return '(?:[^' + n + o + ']|[' + o + '][^ ' + o + '])'; | |
}; | |
k.prototype.$Matchers5 = function(n, o) { | |
"use strict"; | |
return '(?:^|\\s)([' + n + '](' + o + '{0,20}))'; | |
}; | |
k.prototype.$Matchers6 = function(n, o) { | |
"use strict"; | |
return '(?:(?:^|[^#])(' + n + '+)|' + o + ')'; | |
}; | |
k.prototype.$Matchers7 = function(n) { | |
"use strict"; | |
return '(?:' + n + '{4,})'; | |
}; | |
k.prototype.getMainMatcher = function() { | |
"use strict"; | |
return this.$Matchers9; | |
}; | |
k.prototype.getTriggerMatcher = function() { | |
"use strict"; | |
return this.$Matchers8; | |
}; | |
k.prototype.getAutoMatcher = function() { | |
"use strict"; | |
return this.$Matchersb; | |
}; | |
k.prototype.getHashtagMatcher = function() { | |
"use strict"; | |
return this.$Matchersc; | |
}; | |
var l = '\\b[A-Z][^ A-Z' + i + ']', | |
m = { | |
mentionsMatchers: new k(g, i), | |
hashtagMatchers: new k(h, j), | |
userMatcher: new RegExp('(?:' + l + '{4,})' + '$') | |
}; | |
e.exports = m; | |
}, null); | |
__d("MentionsInput", ["Arbiter", "ArbiterMixin", "Bootloader", "CSS", "DataStore", "DOM", "Event", "FlipDirection", "Input", "InputSelection", "Keys", "MentionsInputMatchers", "Parent", "Style", "TokenizeUtil", "UserAgent_DEPRECATED", "htmlize", "mixin", "removeFromArray", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) { | |
b.__markCompiled && b.__markCompiled(); | |
var aa = '\u200B', | |
ba = new RegExp(aa, 'g'), | |
ca = function(pa) { | |
return pa + aa; | |
}, | |
da = '\uFFFD', | |
ea = /@+\[[0-9]+\:([^\]]|\\\])*\]+/g, | |
fa = /[\\\]:]/g, | |
ga = { | |
MENTIONS: 'mentions', | |
HASHTAGS: 'hashtags' | |
}; | |
function ha(pa, qa) { | |
return pa.replace(qa, ' '.repeat(qa.length)); | |
} | |
function ia(pa, qa) { | |
return pa.substring(0, qa) + pa.substring(qa + 1); | |
} | |
function ja(pa) { | |
var qa = pa.lastIndexOf('>'); | |
if (qa >= 0) { | |
var ra = pa.indexOf(' ', qa); | |
return ra >= 0 ? pa.substr(0, ra + 1) : pa; | |
} else return ''; | |
} | |
function ka(pa, qa, ra) { | |
var sa = ra.lastIndexOf('<', qa) > ra.lastIndexOf('>', qa); | |
return sa ? ' ' : ' <wbr />'; | |
} | |
var la = x(h); | |
for (var ma in la) | |
if (la.hasOwnProperty(ma)) oa[ma] = la[ma]; | |
var na = la === null ? null : la.prototype; | |
oa.prototype = Object.create(na); | |
oa.prototype.constructor = oa; | |
oa.__superConstructor__ = la; | |
function oa(pa, qa, ra, sa, ta, ua) { | |
"use strict"; | |
la.call(this); | |
k.set(pa, 'MentionsInput', this); | |
this._root = pa; | |
this._typeahead = qa; | |
this._input = ra; | |
this._offsets = []; | |
var va = null, | |
wa = this.init.bind(this, sa, ta, ua); | |
try { | |
va = document.activeElement === this._input; | |
} catch (xa) {} | |
if (va) { | |
setTimeout(wa, 0); | |
} else var ya = m.listen(this._input, 'focus', function() { | |
setTimeout(wa, 0); | |
ya.remove(); | |
}); | |
this._hasHashtags = sa.hashtags; | |
this._hashtagsDataSource = sa.hashtags_data_source; | |
this._mentionsDataSource = this._typeahead.getData(); | |
this._currentDataSource = this._mentionsDataSource; | |
this._autoSuggestPages = sa.autosuggest_pages; | |
this._lastHighlighterHTML = ''; | |
this._hashtags = []; | |
this._matchers = r.mentionsMatchers; | |
this._setMatchersMode(ga.MENTIONS); | |
} | |
oa.prototype.init = function(pa, qa, ra) { | |
"use strict"; | |
if (this._initialized) return; | |
this._initValue = qa ? qa.value : ''; | |
this._initialized = true; | |
this._highlighter = l.find(this._root, '.highlighter'); | |
this._highlighterInner = this._highlighter.firstChild; | |
this._highlighterContent = l.find(this._root, '.highlighterContent'); | |
this._hiddenInput = l.find(this._root, '.mentionsHidden'); | |
this._placeholder = this._input.getAttribute('placeholder') || ''; | |
this._metrics = ra; | |
if (!this._hiddenInput.name) { | |
var sa = this._input.name; | |
this._input.name = sa + '_text'; | |
this._hiddenInput.name = sa; | |
} | |
this._initEvents(); | |
this._initTypeahead(); | |
if (qa === null) { | |
this._setup(); | |
} else this.reset(qa); | |
if (pa.autoheight) this._typeahead.getCore().updateHeight && this._typeahead.getCore().updateHeight(); | |
this.inform('init', null, g.BEHAVIOR_STATE); | |
}; | |
oa.prototype._setup = function() { | |
"use strict"; | |
this._mentioned = {}; | |
this._orderedUIDs = []; | |
this._numMentioned = 0; | |
this._filterData = null; | |
this._highlighterContent && l.empty(this._highlighterContent); | |
this._highlighterAuxContent && l.remove(this._highlighterAuxContent); | |
this._highlighterAuxContent = null; | |
o.setPlaceholder(this._input, this._placeholder); | |
t.set(this._typeahead.getElement(), 'height', 'auto'); | |
}; | |
oa.prototype.reset = function(pa) { | |
"use strict"; | |
if (!this._initialized) return; | |
this._setup(); | |
var qa = pa && pa.value || ''; | |
this._value = qa; | |
this._hiddenInput && (this._hiddenInput.value = qa); | |
if (this._input && pa) o.setValue(this._input, pa.value); | |
var ra = pa && pa.mentions; | |
if (ra && ra.length) { | |
var sa = []; | |
ra.forEach(function(ta) { | |
sa.push(ta.offset + ta.length); | |
delete ta.offset; | |
delete ta.length; | |
this._addToken(ta); | |
}, this); | |
sa.reverse().forEach(function(ta) { | |
qa = qa.substring(0, ta) + aa + qa.substring(ta); | |
}); | |
} | |
o.setValue(this._input, qa); | |
if (this._value === '') n.setDirection(this._input); | |
this._update(); | |
}; | |
oa.prototype.getValue = function() { | |
"use strict"; | |
return o.getValue(this._input).replace(ba, ''); | |
}; | |
oa.prototype._getMarkedValue = function() { | |
"use strict"; | |
return o.getValueRaw(this._input); | |
}; | |
oa.prototype.getRawValue = function() { | |
"use strict"; | |
this._update(); | |
return o.getValue(this._hiddenInput); | |
}; | |
oa.prototype.checkValue = function() { | |
"use strict"; | |
var pa = this._typeahead.getCore().getValue(); | |
if (this._matchers.getTriggerMatcher().exec(pa) || pa === '') this.inform('sessionEnd', {}); | |
}; | |
oa.prototype.getTypeahead = function() { | |
"use strict"; | |
return this._typeahead; | |
}; | |
oa.prototype.hasChanges = function() { | |
"use strict"; | |
return !o.isEmpty(this._input) && this._input.value !== this._initValue && this._initialized; | |
}; | |
oa.prototype.focus = function() { | |
"use strict"; | |
this._input.focus(); | |
}; | |
oa.prototype._initEvents = function() { | |
"use strict"; | |
var pa = this._update.bind(this); | |
m.listen(this._input, { | |
input: pa, | |
keyup: pa, | |
change: pa, | |
blur: this._handleBlur.bind(this), | |
focus: this._handleFocus.bind(this), | |
keydown: this._handleKeydown.bind(this) | |
}); | |
if (this._metrics) { | |
this._metrics.init(this._typeahead); | |
this._metrics._reset(); | |
this._metrics.bindSessionStart(this._typeahead, 'render', true); | |
this._metrics.bindSessionEnd(this._typeahead.getView(), 'select', true); | |
this._metrics.bindSessionEnd(this, 'sessionEnd', false); | |
m.listen(this._input, 'keyup', function(event) { | |
setTimeout(this.checkValue.bind(this), 0); | |
}.bind(this)); | |
} | |
}; | |
oa.prototype._initTypeahead = function() { | |
"use strict"; | |
this._typeahead.subscribe('select', function(ua, va) { | |
var wa = va.selected; | |
this._addToken({ | |
uid: wa.uid, | |
text: wa.text, | |
type: wa.type, | |
weakreference: wa.weak_reference | |
}); | |
this.updateValue(); | |
}.bind(this)); | |
var pa = this._input, | |
qa = null; | |
function ra() { | |
if (qa === null) { | |
qa = o.getSubmitOnEnter(pa); | |
o.setSubmitOnEnter(pa, false); | |
} | |
} | |
function sa() { | |
if (qa !== null) { | |
o.setSubmitOnEnter(pa, qa); | |
qa = null; | |
} | |
} | |
this._typeahead.subscribe('reset', sa); | |
this._typeahead.subscribe('render', ra); | |
this._typeahead.subscribe('highlight', function(ua, va) { | |
va.index >= 0 ? ra() : sa(); | |
}); | |
this._typeahead.subscribe('query', function() { | |
this._filterData = null; | |
}.bind(this)); | |
var ta = this._typeahead.getCore(); | |
ta.suffix = aa; | |
this._handleFocus(); | |
}; | |
oa.prototype._handleBlur = function() { | |
"use strict"; | |
if (this._filterToken) { | |
this._filterToken.remove(); | |
this._filterToken = null; | |
} | |
}; | |
oa.prototype._handleFocus = function() { | |
"use strict"; | |
if (!this._filterToken) this._filterToken = this._typeahead.getData().addFilter(this._filterResults.bind(this)); | |
this._updateWidth(); | |
}; | |
oa.prototype._handleKeydown = function(event) { | |
"use strict"; | |
var pa = event.keyCode; | |
if (pa == q.BACKSPACE || pa == q.DELETE) this._handleBackspaceAndDelete(event, pa); | |
if (pa == q.LEFT || pa == q.RIGHT) setTimeout(this._handleLeftAndRight.bind(this, pa), 10); | |
}; | |
oa.prototype._handleLeftAndRight = function(pa) { | |
"use strict"; | |
var qa = this._getMarkedValue(), | |
ra = p.get(this._input), | |
sa = ra.start, | |
ta = ra.end, | |
ua = pa == q.LEFT, | |
va = pa == q.RIGHT; | |
if (sa == ta) { | |
var wa = ua ? -1 : 1; | |
if (qa.charAt(sa) == aa) p.set(this._input, sa + wa); | |
} else if (ua && qa.charAt(sa) == aa) { | |
p.set(this._input, sa - 1, ta); | |
} else if (ua && qa.charAt(ta) == aa) { | |
p.set(this._input, sa, ta - 1); | |
} else if (va && qa.charAt(ta) == aa) { | |
p.set(this._input, sa, ta + 1); | |
} else if (va && qa.charAt(sa) == aa) p.set(this._input, sa + 1, ta); | |
}; | |
oa.prototype._handleBackspaceAndDelete = function(event, pa) { | |
"use strict"; | |
var qa = p.get(this._input), | |
ra = false; | |
if (qa.start !== qa.end) | |
if (this._offsetIsInsideMention(qa.start + 1) && this._offsetIsInsideMention(qa.end)) { | |
ra = (pa === q.BACKSPACE); | |
} else return; | |
var sa = pa === q.DELETE ? 1 : -1, | |
ta = sa + (ra ? qa.end : qa.start), | |
ua = this._getMarkedValue(), | |
va = ua; | |
for (var wa = 0; wa < this._orderedUIDs.length; ++wa) { | |
var xa = this._mentioned[this._orderedUIDs[wa]], | |
ya = xa.text, | |
za = ca(ya), | |
ab = va.indexOf(za), | |
bb = ab + za.length; | |
if (ta < ab || ta >= bb) { | |
va = ha(va, za); | |
continue; | |
} | |
var cb, db; | |
if (xa.type != 'user') { | |
cb = 0; | |
db = [ya]; | |
} else { | |
cb = za.substring(0, ta - ab).split(' ').length - 1; | |
db = ya.split(' '); | |
} | |
var eb = db.splice(cb, 1)[0], | |
fb = db.join(' '), | |
gb = cb === 0 ? ab : bb - eb.length - 1; | |
if (fb) { | |
xa.text = fb; | |
fb = ca(fb); | |
} else this._removeToken(xa.uid); | |
var hb = ua.substring(0, ab) + fb + ua.substring(bb); | |
o.setValue(this._input, hb); | |
p.set(this._input, gb); | |
this._update(); | |
event.kill(); | |
break; | |
} | |
}; | |
oa.prototype._offsetIsInsideMention = function(pa) { | |
"use strict"; | |
for (var qa = 0; qa < this._offsets.length; qa++) | |
if (pa > this._offsets[qa][0] && pa <= this._offsets[qa][1]) return true; | |
return false; | |
}; | |
oa.prototype._filterResults = function(pa) { | |
"use strict"; | |
if (this._filterData === null) { | |
var qa = p.get(this._input).start; | |
if (this._offsetIsInsideMention(qa)) { | |
this._filterData = { | |
caretIsInsideMention: true | |
}; | |
return false; | |
} | |
var ra = this._typeahead.getCore(); | |
this._filterData = { | |
value: ra.getValue(), | |
rawValue: ra.getRawValue() | |
}; | |
} | |
if (this._filterData.caretIsInsideMention) return false; | |
if (this._matchers.getMainMatcher().test(this._filterData.rawValue)) return true; | |
if (pa.type != 'user' && !pa.connected_page) return false; | |
if (pa.disable_autosuggest) return false; | |
if (this._matchersMode === ga.MENTIONS && r.userMatcher.test(this._filterData.value)) return true; | |
return u.isExactMatch(this._filterData.value, this._typeahead.getData().getTextToIndex(pa)); | |
}; | |
oa.prototype._addToken = function(pa) { | |
"use strict"; | |
var qa = pa.uid; | |
if (!this._mentioned.hasOwnProperty(qa)) { | |
this._mentioned[qa] = pa; | |
var ra = this._orderedUIDs, | |
sa = this._getMarkedValue().replace(ea, da), | |
ta = sa.indexOf(ca(this._mentioned[qa].text)), | |
ua = false, | |
va = 0; | |
for (var wa = 0; wa < ra.length; ++wa) { | |
var xa = ca(this._mentioned[ra[wa]].text), | |
ya = sa.indexOf(xa, va); | |
va = ya + xa.length; | |
if (ta < ya) { | |
this._orderedUIDs.splice(wa, 0, qa); | |
ua = true; | |
break; | |
} | |
} | |
if (!ua) this._orderedUIDs.push(qa); | |
this._numMentioned++; | |
this._update({ | |
ignoreHashtags: true | |
}); | |
} | |
}; | |
oa.prototype._removeToken = function(pa) { | |
"use strict"; | |
if (this._mentioned.hasOwnProperty(pa)) { | |
delete this._mentioned[pa]; | |
y(this._orderedUIDs, pa); | |
this._numMentioned--; | |
this._update(); | |
} | |
}; | |
oa.prototype._update = function(pa) { | |
"use strict"; | |
pa = pa || {}; | |
var qa = this._getMarkedValue(); | |
if (!pa.ignoreHashtags) this._checkShouldSwapDataSource(qa); | |
if (qa == this._value) return; | |
this._value = qa; | |
this._updateTypeahead(); | |
this._updateMentions(); | |
this._updateWidth(); | |
setTimeout(this._updateDirection.bind(this), 0); | |
this.updateValue(); | |
var ra = this.hasAuxContent(); | |
this.inform('valueUpdate', { | |
value: qa, | |
hasAuxContent: ra | |
}); | |
}; | |
oa.prototype._updateMentions = function() { | |
"use strict"; | |
this._offsets = []; | |
var pa = this._getMarkedValue(), | |
qa = pa; | |
for (var ra = 0; ra < this._orderedUIDs.length; ++ra) { | |
var sa = this._orderedUIDs[ra], | |
ta = ca(this._mentioned[sa].text), | |
ua = qa.indexOf(ta); | |
if (ua == -1) this._removeToken(sa); | |
qa = ha(qa, ta); | |
this._offsets.push([ua, ua + ta.length]); | |
} | |
var va = pa; | |
while ((ua = qa.indexOf(aa)) > -1) { | |
va = ia(va, ua); | |
qa = ia(qa, ua); | |
} | |
if (pa !== va) { | |
var wa = p.get(this._input); | |
o.setValue(this._input, va); | |
p.set(this._input, wa.start); | |
this._value = va; | |
} | |
}; | |
oa.prototype._renderHashtags = function(pa) { | |
"use strict"; | |
this._initHashtagParser(pa); | |
if (!this._hasHashtags || !this._hashtagParser) return w(pa); | |
this._hashtags = this._hashtagParser.parse(pa); | |
var qa = [], | |
ra = 0; | |
for (var sa = 0; sa < this._hashtags.length; sa++) { | |
var ta = this._hashtags[sa]; | |
qa.push(w(pa.substring(ra, ta.rawOffset)), '<b>', ta.marker, ta.tag, '</b>'); | |
ra = ta.rawOffset + ta.marker.length + ta.tag.length; | |
} | |
qa.push(w(pa.substring(ra))); | |
return qa.join(''); | |
}; | |
oa.prototype.updateValue = function() { | |
"use strict"; | |
var pa = this._value = this._getMarkedValue(), | |
qa = this._orderedUIDs, | |
ra = pa.replace(ea, da); | |
for (var sa = 0; sa < qa.length; ++sa) { | |
var ta = '@[' + qa[sa] + ':]', | |
ua = ca(this._mentioned[qa[sa]].text); | |
ra = ra.replace(ua, ta); | |
pa = pa.replace(ua, ta); | |
} | |
var va = this._renderHashtags(pa); | |
for (var sa = 0; sa < qa.length; ++sa) { | |
var wa = qa[sa], | |
xa = this._mentioned[wa], | |
ya = xa.text, | |
za = xa.weakreference ? '<b class="weak">' : '<b>'; | |
va = va.replace('@[' + wa + ':]', za + w(ca(ya)) + '</b>'); | |
ya = ya.replace(fa, function(bb) { | |
return '\\' + bb; | |
}); | |
ra = ra.replace('@[' + wa + ':]', '@[' + wa + ':' + ya + ']'); | |
} | |
var ab = ja(va); | |
if (this._highlighterAuxContent || ab !== this._lastHighlighterHTML) { | |
if (v.ie() < 9) va = va.replace(/ /g, ka); | |
this._highlighterContent.innerHTML = va; | |
this._updateHighlighter(); | |
this._lastHighlighterHTML = ab; | |
} | |
this._hiddenInput.value = ra; | |
this._updateHeight(); | |
}; | |
oa.prototype._updateDirection = function() { | |
"use strict"; | |
var pa = t.get(this._input, 'direction'); | |
if (pa == this._dir) return; | |
this._dir = pa; | |
t.set(this._highlighter, 'direction', pa); | |
if (pa == 'rtl') { | |
t.set(this._highlighter, 'text-align', 'right'); | |
} else t.set(this._highlighter, 'text-align', 'left'); | |
}; | |
oa.prototype._updateWidth = function() { | |
"use strict"; | |
var pa = this._input.offsetWidth; | |
if (pa === this._lastInputWidth) return; | |
this._lastInputWidth = pa; | |
var qa = t.getFloat.bind(null, this._input), | |
ra = pa - qa('paddingLeft') - qa('paddingRight') - qa('borderLeftWidth') - qa('borderRightWidth'); | |
this._highlighterInner.style.width = Math.max(ra, 0) + 'px'; | |
}; | |
oa.prototype._updateHeight = function() { | |
"use strict"; | |
if (this._highlighterAuxContent) { | |
var pa = this._highlighter.offsetHeight, | |
qa = this._typeahead.getElement(); | |
if (pa > qa.offsetHeight) { | |
if (this._typeahead.setHeight) { | |
this._typeahead.setHeight(pa); | |
} else t.set(qa, 'height', pa + 'px'); | |
g.inform('reflow'); | |
} | |
} | |
}; | |
oa.prototype._updateTypeahead = function() { | |
"use strict"; | |
var pa = this._typeahead.getCore(); | |
pa.matcher = this._matchers.getAutoMatcher(); | |
pa.setExclusions(this._orderedUIDs); | |
this.inform('update', { | |
mentioned: this._mentioned | |
}); | |
}; | |
oa.prototype.setPlaceholder = function(pa) { | |
"use strict"; | |
this._placeholder = pa; | |
if (!this.hasAuxContent()) o.setPlaceholder(this._input, pa); | |
}; | |
oa.prototype._updateHighlighter = function() { | |
"use strict"; | |
if (this._highlighterContent) j.conditionShow(this._highlighterContent, this._numMentioned > 0 || this.hasAuxContent() || this._hashtags.length); | |
}; | |
oa.prototype.setAuxContent = function(pa) { | |
"use strict"; | |
if (this._highlighterContent) { | |
if (!this._highlighterAuxContent) { | |
this._highlighterAuxContent = l.create('span', { | |
className: "highlighterAuxContent" | |
}); | |
l.insertAfter(this._highlighterContent, this._highlighterAuxContent); | |
} | |
l.setContent(this._highlighterAuxContent, pa); | |
if (pa) { | |
o.setPlaceholder(this._input, ''); | |
} else o.setPlaceholder(this._input, this._placeholder); | |
this._value = null; | |
this._update(); | |
this._updateHighlighter(); | |
this._updateHeight(); | |
} | |
}; | |
oa.prototype.hasAuxContent = function() { | |
"use strict"; | |
var pa = this.getAuxContentRoot(); | |
return pa && j.shown(pa) && pa.innerHTML.length > 0; | |
}; | |
oa.prototype.getAuxContentRoot = function() { | |
"use strict"; | |
return this._highlighterAuxContent; | |
}; | |
oa.prototype.addMention = function(pa, qa) { | |
"use strict"; | |
qa = (typeof qa === 'undefined') ? true : qa; | |
var ra = qa === false ? '' : ' ', | |
sa = this._getMarkedValue(); | |
if (sa !== '') sa += ' '; | |
o.setValue(this._input, sa + ca(pa.text) + ra); | |
this._addToken(pa); | |
this._update(); | |
}; | |
oa.prototype.getMentions = function() { | |
"use strict"; | |
return this._mentioned; | |
}; | |
oa.prototype.bootloadHashtagParser = function() { | |
"use strict"; | |
if (!this._hashtagParser) i.loadModules(["HashtagParser"], function(pa) { | |
this._hashtagParser = pa; | |
if (this._initialized) { | |
this._value = null; | |
this._update(); | |
} | |
}.bind(this)); | |
}; | |
oa.getInstance = function(pa) { | |
"use strict"; | |
var qa = s.byClass(pa, 'uiMentionsInput'); | |
return qa ? k.get(qa, 'MentionsInput') : null; | |
}; | |
oa.prototype._checkShouldSwapDataSource = function(pa) { | |
"use strict"; | |
this._initHashtagParser(pa); | |
if (!this._hashtagsDataSource || !this._hashtagParser) return; | |
var qa = this._isInsideHashtagToken(pa); | |
if (this._matchersMode === ga.HASHTAGS && !qa) { | |
this._setMatchersMode(ga.MENTIONS); | |
this._swapData(this._mentionsDataSource); | |
} else if (this._matchersMode === ga.MENTIONS && qa) { | |
this._setMatchersMode(ga.HASHTAGS); | |
this._swapData(this._hashtagsDataSource); | |
} | |
}; | |
oa.prototype._swapData = function(pa) { | |
"use strict"; | |
this._currentDataSource = pa; | |
this._typeahead.swapDataNoCoreReset(this._currentDataSource); | |
}; | |
oa.prototype._isInsideHashtagToken = function(pa) { | |
"use strict"; | |
this._hashtags = this._hashtagParser.parse(pa); | |
var qa = p.get(this._input).start; | |
for (var ra = 0; ra < this._hashtags.length; ra++) { | |
var sa = this._hashtags[ra], | |
ta = sa.offset; | |
if (qa >= ta && qa <= (ta + sa.tag.length + 1)) return true; | |
} | |
return false; | |
}; | |
oa.prototype._initHashtagParser = function(pa) { | |
"use strict"; | |
if (this._hashtagParser) return; | |
if (this._matchers.getHashtagMatcher().exec(pa)) this.bootloadHashtagParser(); | |
}; | |
oa.prototype._setMatchersMode = function(pa) { | |
"use strict"; | |
switch (pa) { | |
case ga.MENTIONS: | |
this._matchers = r.mentionsMatchers; | |
break; | |
case ga.HASHTAGS: | |
this._matchers = r.hashtagMatchers; | |
break; | |
default: | |
throw new Error('Invariant Violation: MatchersMode enum is missing constant ' + pa); | |
} | |
this._matchersMode = pa; | |
}; | |
e.exports = oa; | |
}, null); | |
__d("legacy:MentionsInput", ["MentionsInput"], function(a, b, c, d) { | |
b.__markCompiled && b.__markCompiled(); | |
a.MentionsInput = b('MentionsInput'); | |
}, 3); | |
__d("TypeaheadAreaCore", ["InputSelection", "TextAreaControl", "TypeaheadCore", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
for (var k in i) | |
if (i.hasOwnProperty(k)) m[k] = i[k]; | |
var l = i === null ? null : i.prototype; | |
m.prototype = Object.create(l); | |
m.prototype.constructor = m; | |
m.__superConstructor__ = i; | |
function m(n) { | |
"use strict"; | |
i.call(this, n); | |
this.matcher = new RegExp(this.matcher + '$'); | |
this.preventFocusChangeOnTab = true; | |
} | |
m.prototype.select = function(n) { | |
"use strict"; | |
l.select.call(this, n); | |
var o = this.element.value, | |
p = this.prefix + n.text + this.suffix; | |
this.expandBounds(o, p); | |
var q = o.substring(0, this.start), | |
r = o.substring(this.end); | |
this.element.value = q + p + r; | |
g.set(this.element, q.length + p.length); | |
}; | |
m.prototype.expandBounds = function(n, o) { | |
"use strict"; | |
n = n.toLowerCase(); | |
o = o.toLowerCase(); | |
var p, q, r, s, t = /\s/; | |
q = n.substring(this.start, this.end); | |
r = o.indexOf(q); | |
p = this.start; | |
while (p >= 0 && r >= 0) { | |
s = n.charAt(p - 1); | |
if (!s || t.test(s)) this.start = p; | |
q = s + q; | |
r = o.indexOf(q); | |
p--; | |
} | |
q = n.substring(this.start, this.end); | |
r = o.indexOf(q); | |
p = this.end; | |
while (p <= n.length && r >= 0) { | |
s = n.charAt(p); | |
if (!s || t.test(s)) this.end = p; | |
q = q + s; | |
r = o.indexOf(q); | |
p++; | |
} | |
}; | |
m.prototype.getRawValue = function() { | |
"use strict"; | |
var n = g.get(this.element).start || 0; | |
return l.getValue.call(this).substring(0, n); | |
}; | |
m.prototype.getValue = function() { | |
"use strict"; | |
var n = this.matcher && this.matcher.exec(this.getRawValue()); | |
if (!n) return ''; | |
var o = n[0], | |
p = n.index + o.length; | |
o = o.replace(/^\s/, ''); | |
var q = o.length; | |
o = o.replace(/\s$/, ''); | |
var r = q - o.length; | |
this.start = p - q; | |
this.end = p + r; | |
if (n[2] && (n[2].charAt(0) === '#' || n[2].charAt(0) === '\\uFF03')) return n[2]; | |
return n[3] || n[1] || n[0]; | |
}; | |
m.prototype.updateHeight = function() { | |
"use strict"; | |
var n = h.getInstance(this.element); | |
n.updateHeight(); | |
}; | |
Object.assign(m.prototype, { | |
prefix: '', | |
suffix: ', ', | |
matcher: "\\b[^,]*", | |
click: j | |
}); | |
e.exports = m; | |
}, null); | |
__d("TypeaheadHoistFriends", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h) { | |
"use strict"; | |
this._typeahead = h; | |
} | |
g.prototype.enable = function() { | |
"use strict"; | |
var h = this._typeahead.getView(); | |
this._subscription = h.subscribe('beforeRender', function(i, j) { | |
var k = [], | |
l = [], | |
m = []; | |
for (var n = 0; n < j.results.length; ++n) { | |
var o = j.results[n]; | |
if (o.type == 'header') { | |
m = m.concat(l, k); | |
m.push(o); | |
l = []; | |
k = []; | |
} else if (o.type == 'user' && o.bootstrapped) { | |
l.push(o); | |
} else k.push(o); | |
} | |
j.results = m.concat(l, k); | |
}); | |
}; | |
g.prototype.disable = function() { | |
"use strict"; | |
this._typeahead.getView().unsubscribe(this._subscription); | |
this._subscription = null; | |
}; | |
Object.assign(g.prototype, { | |
_subscription: null | |
}); | |
e.exports = g; | |
}, null); | |
__d("legacy:HoistFriendsTypeaheadBehavior", ["TypeaheadHoistFriends"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
if (!a.TypeaheadBehaviors) a.TypeaheadBehaviors = {}; | |
a.TypeaheadBehaviors.hoistFriends = function(h) { | |
h.enableBehavior(g); | |
}; | |
}, 3); | |
__d("TypeaheadMetrics", ["AsyncRequest", "Event", "QueriesHistory", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = 1000; | |
function l(m) { | |
"use strict"; | |
this.extraData = {}; | |
Object.assign(this, m); | |
} | |
l.prototype.init = function(m) { | |
"use strict"; | |
this.init = j; | |
this._initImpl(m); | |
}; | |
l.prototype._initImpl = function(m) { | |
"use strict"; | |
this.core = m.getCore(); | |
this.view = m.getView(); | |
this.data = m.getData(); | |
this.queriesHistory = new i(k); | |
this.stats = {}; | |
this.sessionActive = false; | |
this._sessionStartEvents = []; | |
this._sessionEndEvents = []; | |
this._reset(); | |
this.initEvents(); | |
}; | |
l.prototype._reset = function() { | |
"use strict"; | |
this.log = []; | |
this.stats = {}; | |
this.avgStats = {}; | |
this.sessionActive = false; | |
this._setSid(Math.floor(Date.now() * Math.random())); | |
this.request_ids = []; | |
this.lastNotBackspacedQuery = ''; | |
this.queriesHistory.reset(); | |
this._logEvent('session_started', {}); | |
}; | |
l.prototype._logEvent = function(m, n) { | |
"use strict"; | |
var o = { | |
type: m, | |
data: n, | |
time: Date.now() | |
}; | |
this.log.push(o); | |
}; | |
l.prototype._setSid = function(m) { | |
"use strict"; | |
this.sid = m; | |
if (typeof this.data.queryData === 'object' && this.data.queryData !== null) { | |
this.data.queryData.sid = this.sid; | |
} else this.data.setQueryData({ | |
sid: this.sid | |
}); | |
if (typeof this.data.bootstrapData === 'object' && this.data.bootstrapData !== null) { | |
this.data.bootstrapData.sid = this.sid; | |
} else this.data.setBootstrapData({ | |
sid: this.sid | |
}); | |
}; | |
l.prototype.resetWithData = function(m) { | |
"use strict"; | |
this.init = j; | |
this._initImpl(m); | |
}; | |
l.prototype.recordSelect = function(m) { | |
"use strict"; | |
var n = m.selected; | |
if (n.uid == null) { | |
this.recordStat('selected_id', 'SELECT_NULL'); | |
} else this.recordStat('selected_id', n.uid); | |
this.recordStat('selected_type', n.type); | |
this.recordStat('selected_score', n.score); | |
this.recordStat('selected_original_id', n.original_id); | |
this.recordStat('place_id', n.place_id); | |
this.recordStat('client_time', n.client_time); | |
this.recordStat('selected_position', m.index); | |
this.recordStat('selected_with_mouse', m.clicked ? 1 : 0); | |
this.recordStat('selected_query', m.query); | |
this._sessionEnd(); | |
}; | |
l.prototype.bindSessionStart = function(m, event, n) { | |
"use strict"; | |
if (n) | |
for (var o = 0; o < this._sessionStartEvents.length; ++o) { | |
var p = this._sessionStartEvents[o]; | |
p.obj.unsubscribe(p.token); | |
} | |
this._sessionStartEvents.push({ | |
obj: m, | |
token: m.subscribe(event, function(q, r) { | |
this._sessionStart(); | |
}.bind(this)) | |
}); | |
}; | |
l.prototype.bindSessionEnd = function(m, event, n) { | |
"use strict"; | |
if (n) | |
for (var o = 0; o < this._sessionEndEvents.length; ++o) { | |
var p = this._sessionEndEvents[o]; | |
p.obj.unsubscribe(p.token); | |
} | |
this._sessionEndEvents.push({ | |
obj: m, | |
token: m.subscribe(event, function(q, r) { | |
this._sessionEnd(); | |
}.bind(this)) | |
}); | |
}; | |
l.prototype.dataSubscribe = function(m, n) { | |
"use strict"; | |
var o = this.data, | |
p = this.data.subscribe(m, n); | |
this._dataSubscriptions.push(function() { | |
o.unsubscribe(p); | |
}); | |
}; | |
l.prototype.initEvents = function() { | |
"use strict"; | |
this._dataSubscriptions = this._dataSubscriptions || []; | |
this._dataSubscriptions.forEach(function(m) { | |
m(); | |
}); | |
this._dataSubscriptions = []; | |
this.bindSessionStart(this.core, 'focus', false); | |
this.bindSessionEnd(this.core, 'blur', false); | |
this.view.subscribe('select', function(m, n) { | |
this.recordSelect(n); | |
}.bind(this)); | |
this.bindSessionEnd(this.view, 'select', false); | |
this.view.subscribe('render', function(m, n) { | |
this.results = n; | |
}.bind(this)); | |
this.dataSubscribe('beforeQuery', function(m, n) { | |
this._logEvent('user_typed', { | |
query: n.value | |
}); | |
if (!n.value) return; | |
this.query = n.value; | |
this.queriesHistory.add(this.query); | |
if (this.lastNotBackspacedQuery.indexOf(this.query) !== 0) this.lastNotBackspacedQuery = this.query; | |
this.recordCountStat('num_queries'); | |
}.bind(this)); | |
this.dataSubscribe('beforeFetch', function(m, n) { | |
if (n.fetch_context.bootstrap) { | |
this.bootstrapBegin = Date.now(); | |
} else n.fetch_context.queryBegin = Date.now(); | |
this._logEvent('async_query_started', { | |
query: n.fetch_context.value, | |
request_id: n.fetch_context.request_id | |
}); | |
}.bind(this)); | |
this.dataSubscribe('fetchComplete', function(m, n) { | |
this._logEvent('async_query_completed', { | |
query: n.fetch_context.value, | |
request_id: n.fetch_context.request_id | |
}); | |
if (n.fetch_context.bootstrap) { | |
this.recordAvgStat('bootstrap_latency', Date.now() - this.bootstrapBegin); | |
var o = {}; | |
n.response.payload.entries.forEach(function(p) { | |
if (!o[p.type]) { | |
o[p.type] = 1; | |
} else o[p.type]++; | |
}); | |
this.recordStat('bootstrap_response_types', o); | |
this.bootstrapped = true; | |
} else { | |
if ('filtered_count' in n.response.payload) this.recordStat('filtered_count', n.response.payload.filtered_count); | |
this.recordAvgStat('avg_query_latency', Date.now() - n.fetch_context.queryBegin); | |
} | |
}.bind(this)); | |
this.dataSubscribe('respond', function(m, n) { | |
this._logEvent('respond', { | |
query: n.value, | |
num_results: n.results.length | |
}); | |
var o = this.data.tokenizeBackend(n.value || '').flatValue, | |
p = this.data.findBestPreviousQuery(o, this.data.getQueryIDs()) || '', | |
q = this.data.getQueryIDs()[p]; | |
this.normalized_backend_query = p; | |
this.request_id = q; | |
this.request_ids.push(q); | |
}.bind(this)); | |
this.dataSubscribe('dirty', function(m, n) { | |
this.bootstrapped = false; | |
}.bind(this)); | |
}; | |
l.prototype._sessionStart = function() { | |
"use strict"; | |
if (this.sessionActive) return; | |
this.sessionActive = true; | |
}; | |
l.prototype._sessionEnd = function() { | |
"use strict"; | |
if (!this.sessionActive) return; | |
this.sessionActive = false; | |
this.submit(); | |
this._reset(); | |
}; | |
l.prototype.recordStat = function(m, n) { | |
"use strict"; | |
this.stats[m] = n; | |
}; | |
l.prototype.recordCountStat = function(m) { | |
"use strict"; | |
var n = this.stats[m]; | |
this.stats[m] = n ? n + 1 : 1; | |
}; | |
l.prototype.recordAvgStat = function(m, n) { | |
"use strict"; | |
if (this.avgStats[m]) { | |
this.avgStats[m][0] += n; | |
++this.avgStats[m][1]; | |
} else this.avgStats[m] = [n, 1]; | |
}; | |
l.prototype.hasStats = function() { | |
"use strict"; | |
return !!Object.keys(this.stats).length; | |
}; | |
l.prototype.submit = function() { | |
"use strict"; | |
if ('log_all_sessions' in this.extraData || this.hasStats()) { | |
Object.assign(this.stats, this.extraData); | |
if (this.results) { | |
var m = (this.results).map(function(p, q) { | |
return p.uid; | |
}); | |
this.recordStat('candidate_results', JSON.stringify(m)); | |
} | |
if (this.query) this.recordStat('query', this.query); | |
if (this.lastNotBackspacedQuery) this.recordStat('last_not_backspaced_query', this.lastNotBackspacedQuery); | |
this.recordStat('queries_history', JSON.stringify(this.queriesHistory.getQueries())); | |
if (this.normalized_backend_query) this.recordStat('normalized_backend_query', this.normalized_backend_query); | |
if (this.request_id) this.recordStat('request_id', this.request_id); | |
if (this.request_ids.length) this.recordStat('request_ids', this.request_ids); | |
if (this.sid) this.recordStat('sid', this.sid); | |
if (this.bootstrapped) this.recordStat('bootstrapped', 1); | |
for (var n in this.avgStats) { | |
var o = this.avgStats[n]; | |
this.stats[n] = o[0] / o[1]; | |
} | |
this.recordStat('log', JSON.stringify(this.log)); | |
new g().setURI(this.endPoint).setMethod('POST').setData({ | |
stats: this.stats | |
}).setErrorHandler(j).send(); | |
this._reset(); | |
} | |
}; | |
l.register = function(m, n, o) { | |
"use strict"; | |
if (document.activeElement === m) { | |
n.init(o); | |
} else var p = h.listen(m, 'focus', function() { | |
n.init(o); | |
p.remove(); | |
}); | |
}; | |
Object.assign(l.prototype, { | |
endPoint: '/ajax/typeahead/record_basic_metrics.php' | |
}); | |
e.exports = l; | |
}, null); |
/*!CK:3006576929!*/ /*1438697692,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["k9yEQ"]); | |
} | |
__d("CenteredContainer.react", ["React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "CenteredContainer", | |
propTypes: { | |
fullHeight: k.bool, | |
vertical: k.bool, | |
horizontal: k.bool | |
}, | |
getDefaultProps: function() { | |
return { | |
fullHeight: false, | |
vertical: false, | |
horizontal: true | |
}; | |
}, | |
render: function() { | |
var m = ((this.props.vertical ? "_3bwv" : '') + (this.props.horizontal ? ' ' + "_3bww" : '')), | |
n = g.Children.map(this.props.children, function(p) { | |
return (g.createElement("div", { | |
className: "_3bwx" | |
}, p)); | |
}), | |
o = i(this.props.className, ((this.props.fullHeight ? "_5bpf" : ''))); | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: o | |
}), g.createElement("div", { | |
className: m | |
}, g.createElement("div", { | |
className: "_3bwy" | |
}, n)))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("immutable", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
(function(g, h) { | |
typeof f === 'object' && typeof e !== 'undefined' ? e.exports = h() : typeof define === 'function' && define.amd ? define(h) : g.Immutable = h(); | |
}(this, function() { | |
'use strict'; | |
var g = Array.prototype.slice; | |
function h(xh, yh) { | |
if (yh) xh.prototype = Object.create(yh.prototype); | |
xh.prototype.constructor = xh; | |
} | |
var i = 'delete', | |
j = 5, | |
k = 1 << j, | |
l = k - 1, | |
m = {}, | |
n = { | |
value: false | |
}, | |
o = { | |
value: false | |
}; | |
function p(xh) { | |
xh.value = false; | |
return xh; | |
} | |
function q(xh) { | |
xh && (xh.value = true); | |
} | |
function r() {} | |
function s(xh, yh) { | |
yh = yh || 0; | |
var zh = Math.max(0, xh.length - yh), | |
ai = new Array(zh); | |
for (var bi = 0; bi < zh; bi++) ai[bi] = xh[bi + yh]; | |
return ai; | |
} | |
function t(xh) { | |
if (xh.size === (void 0)) xh.size = xh.__iterate(v); | |
return xh.size; | |
} | |
function u(xh, yh) { | |
return yh >= 0 ? (+yh) : t(xh) + (+yh); | |
} | |
function v() { | |
return true; | |
} | |
function w(xh, yh, zh) { | |
return (xh === 0 || (zh !== (void 0) && xh <= -zh)) && (yh === (void 0) || (zh !== (void 0) && yh >= zh)); | |
} | |
function x(xh, yh) { | |
return z(xh, yh, 0); | |
} | |
function y(xh, yh) { | |
return z(xh, yh, yh); | |
} | |
function z(xh, yh, zh) { | |
return xh === (void 0) ? zh : xh < 0 ? Math.max(0, yh + xh) : yh === (void 0) ? xh : Math.min(yh, xh); | |
} | |
function aa(xh) { | |
return ea(xh) ? xh : bb(xh); | |
} | |
h(ba, aa); | |
function ba(xh) { | |
return fa(xh) ? xh : cb(xh); | |
} | |
h(ca, aa); | |
function ca(xh) { | |
return ga(xh) ? xh : db(xh); | |
} | |
h(da, aa); | |
function da(xh) { | |
return ea(xh) && !ha(xh) ? xh : eb(xh); | |
} | |
function ea(xh) { | |
return !!(xh && xh[ja]); | |
} | |
function fa(xh) { | |
return !!(xh && xh[ka]); | |
} | |
function ga(xh) { | |
return !!(xh && xh[la]); | |
} | |
function ha(xh) { | |
return fa(xh) || ga(xh); | |
} | |
function ia(xh) { | |
return !!(xh && xh[ma]); | |
} | |
aa.isIterable = ea; | |
aa.isKeyed = fa; | |
aa.isIndexed = ga; | |
aa.isAssociative = ha; | |
aa.isOrdered = ia; | |
aa.Keyed = ba; | |
aa.Indexed = ca; | |
aa.Set = da; | |
var ja = '@@__IMMUTABLE_ITERABLE__@@', | |
ka = '@@__IMMUTABLE_KEYED__@@', | |
la = '@@__IMMUTABLE_INDEXED__@@', | |
ma = '@@__IMMUTABLE_ORDERED__@@', | |
na = 0, | |
oa = 1, | |
pa = 2, | |
qa = typeof Symbol === 'function' && Symbol.iterator, | |
ra = '@@iterator', | |
sa = qa || ra; | |
function ta(xh) { | |
this.next = xh; | |
} | |
ta.prototype.toString = function() { | |
return '[Iterator]'; | |
}; | |
ta.KEYS = na; | |
ta.VALUES = oa; | |
ta.ENTRIES = pa; | |
ta.prototype.inspect = ta.prototype.toSource = function() { | |
return this.toString(); | |
}; | |
ta.prototype[sa] = function() { | |
return this; | |
}; | |
function ua(xh, yh, zh, ai) { | |
var bi = xh === 0 ? yh : xh === 1 ? zh : [yh, zh]; | |
ai ? (ai.value = bi) : (ai = { | |
value: bi, | |
done: false | |
}); | |
return ai; | |
} | |
function va() { | |
return { | |
value: (void 0), | |
done: true | |
}; | |
} | |
function wa(xh) { | |
return !!za(xh); | |
} | |
function xa(xh) { | |
return xh && typeof xh.next === 'function'; | |
} | |
function ya(xh) { | |
var yh = za(xh); | |
return yh && yh.call(xh); | |
} | |
function za(xh) { | |
var yh = xh && ((qa && xh[qa]) || xh[ra]); | |
if (typeof yh === 'function') return yh; | |
} | |
function ab(xh) { | |
return xh && typeof xh.length === 'number'; | |
} | |
h(bb, aa); | |
function bb(xh) { | |
return xh === null || xh === (void 0) ? mb() : ea(xh) ? xh.toSeq() : pb(xh); | |
} | |
bb.of = function() { | |
return bb(arguments); | |
}; | |
bb.prototype.toSeq = function() { | |
return this; | |
}; | |
bb.prototype.toString = function() { | |
return this.__toString('Seq {', '}'); | |
}; | |
bb.prototype.cacheResult = function() { | |
if (!this._cache && this.__iterateUncached) { | |
this._cache = this.entrySeq().toArray(); | |
this.size = this._cache.length; | |
} | |
return this; | |
}; | |
bb.prototype.__iterate = function(xh, yh) { | |
return rb(this, xh, yh, true); | |
}; | |
bb.prototype.__iterator = function(xh, yh) { | |
return sb(this, xh, yh, true); | |
}; | |
h(cb, bb); | |
function cb(xh) { | |
return xh === null || xh === (void 0) ? mb().toKeyedSeq() : ea(xh) ? (fa(xh) ? xh.toSeq() : xh.fromEntrySeq()) : nb(xh); | |
} | |
cb.prototype.toKeyedSeq = function() { | |
return this; | |
}; | |
h(db, bb); | |
function db(xh) { | |
return xh === null || xh === (void 0) ? mb() : !ea(xh) ? ob(xh) : fa(xh) ? xh.entrySeq() : xh.toIndexedSeq(); | |
} | |
db.of = function() { | |
return db(arguments); | |
}; | |
db.prototype.toIndexedSeq = function() { | |
return this; | |
}; | |
db.prototype.toString = function() { | |
return this.__toString('Seq [', ']'); | |
}; | |
db.prototype.__iterate = function(xh, yh) { | |
return rb(this, xh, yh, false); | |
}; | |
db.prototype.__iterator = function(xh, yh) { | |
return sb(this, xh, yh, false); | |
}; | |
h(eb, bb); | |
function eb(xh) { | |
return (xh === null || xh === (void 0) ? mb() : !ea(xh) ? ob(xh) : fa(xh) ? xh.entrySeq() : xh).toSetSeq(); | |
} | |
eb.of = function() { | |
return eb(arguments); | |
}; | |
eb.prototype.toSetSeq = function() { | |
return this; | |
}; | |
bb.isSeq = kb; | |
bb.Keyed = cb; | |
bb.Set = eb; | |
bb.Indexed = db; | |
var fb = '@@__IMMUTABLE_SEQ__@@'; | |
bb.prototype[fb] = true; | |
h(gb, db); | |
function gb(xh) { | |
this._array = xh; | |
this.size = xh.length; | |
} | |
gb.prototype.get = function(xh, yh) { | |
return this.has(xh) ? this._array[u(this, xh)] : yh; | |
}; | |
gb.prototype.__iterate = function(xh, yh) { | |
var zh = this._array, | |
ai = zh.length - 1; | |
for (var bi = 0; bi <= ai; bi++) | |
if (xh(zh[yh ? ai - bi : bi], bi, this) === false) return bi + 1; | |
return bi; | |
}; | |
gb.prototype.__iterator = function(xh, yh) { | |
var zh = this._array, | |
ai = zh.length - 1, | |
bi = 0; | |
return new ta(function() { | |
return bi > ai ? va() : ua(xh, bi, zh[yh ? ai - bi++ : bi++]); | |
}); | |
}; | |
h(hb, cb); | |
function hb(xh) { | |
var yh = Object.keys(xh); | |
this._object = xh; | |
this._keys = yh; | |
this.size = yh.length; | |
} | |
hb.prototype.get = function(xh, yh) { | |
if (yh !== (void 0) && !this.has(xh)) return yh; | |
return this._object[xh]; | |
}; | |
hb.prototype.has = function(xh) { | |
return this._object.hasOwnProperty(xh); | |
}; | |
hb.prototype.__iterate = function(xh, yh) { | |
var zh = this._object, | |
ai = this._keys, | |
bi = ai.length - 1; | |
for (var ci = 0; ci <= bi; ci++) { | |
var di = ai[yh ? bi - ci : ci]; | |
if (xh(zh[di], di, this) === false) return ci + 1; | |
} | |
return ci; | |
}; | |
hb.prototype.__iterator = function(xh, yh) { | |
var zh = this._object, | |
ai = this._keys, | |
bi = ai.length - 1, | |
ci = 0; | |
return new ta(function() { | |
var di = ai[yh ? bi - ci : ci]; | |
return ci++ > bi ? va() : ua(xh, di, zh[di]); | |
}); | |
}; | |
hb.prototype[ma] = true; | |
h(ib, db); | |
function ib(xh) { | |
this._iterable = xh; | |
this.size = xh.length || xh.size; | |
} | |
ib.prototype.__iterateUncached = function(xh, yh) { | |
if (yh) return this.cacheResult().__iterate(xh, yh); | |
var zh = this._iterable, | |
ai = ya(zh), | |
bi = 0; | |
if (xa(ai)) { | |
var ci; | |
while (!(ci = ai.next()).done) | |
if (xh(ci.value, bi++, this) === false) break; | |
} | |
return bi; | |
}; | |
ib.prototype.__iteratorUncached = function(xh, yh) { | |
if (yh) return this.cacheResult().__iterator(xh, yh); | |
var zh = this._iterable, | |
ai = ya(zh); | |
if (!xa(ai)) return new ta(va); | |
var bi = 0; | |
return new ta(function() { | |
var ci = ai.next(); | |
return ci.done ? ci : ua(xh, bi++, ci.value); | |
}); | |
}; | |
h(jb, db); | |
function jb(xh) { | |
this._iterator = xh; | |
this._iteratorCache = []; | |
} | |
jb.prototype.__iterateUncached = function(xh, yh) { | |
if (yh) return this.cacheResult().__iterate(xh, yh); | |
var zh = this._iterator, | |
ai = this._iteratorCache, | |
bi = 0; | |
while (bi < ai.length) | |
if (xh(ai[bi], bi++, this) === false) return bi; | |
var ci; | |
while (!(ci = zh.next()).done) { | |
var di = ci.value; | |
ai[bi] = di; | |
if (xh(di, bi++, this) === false) break; | |
} | |
return bi; | |
}; | |
jb.prototype.__iteratorUncached = function(xh, yh) { | |
if (yh) return this.cacheResult().__iterator(xh, yh); | |
var zh = this._iterator, | |
ai = this._iteratorCache, | |
bi = 0; | |
return new ta(function() { | |
if (bi >= ai.length) { | |
var ci = zh.next(); | |
if (ci.done) return ci; | |
ai[bi] = ci.value; | |
} | |
return ua(xh, bi, ai[bi++]); | |
}); | |
}; | |
function kb(xh) { | |
return !!(xh && xh[fb]); | |
} | |
var lb; | |
function mb() { | |
return lb || (lb = new gb([])); | |
} | |
function nb(xh) { | |
var yh = Array.isArray(xh) ? new gb(xh).fromEntrySeq() : xa(xh) ? new jb(xh).fromEntrySeq() : wa(xh) ? new ib(xh).fromEntrySeq() : typeof xh === 'object' ? new hb(xh) : (void 0); | |
if (!yh) throw new TypeError('Expected Array or iterable object of [k, v] entries, ' + 'or keyed object: ' + xh); | |
return yh; | |
} | |
function ob(xh) { | |
var yh = qb(xh); | |
if (!yh) throw new TypeError('Expected Array or iterable object of values: ' + xh); | |
return yh; | |
} | |
function pb(xh) { | |
var yh = qb(xh) || (typeof xh === 'object' && new hb(xh)); | |
if (!yh) throw new TypeError('Expected Array or iterable object of values, or keyed object: ' + xh); | |
return yh; | |
} | |
function qb(xh) { | |
return (ab(xh) ? new gb(xh) : xa(xh) ? new jb(xh) : wa(xh) ? new ib(xh) : (void 0)); | |
} | |
function rb(xh, yh, zh, ai) { | |
var bi = xh._cache; | |
if (bi) { | |
var ci = bi.length - 1; | |
for (var di = 0; di <= ci; di++) { | |
var ei = bi[zh ? ci - di : di]; | |
if (yh(ei[1], ai ? ei[0] : di, xh) === false) return di + 1; | |
} | |
return di; | |
} | |
return xh.__iterateUncached(yh, zh); | |
} | |
function sb(xh, yh, zh, ai) { | |
var bi = xh._cache; | |
if (bi) { | |
var ci = bi.length - 1, | |
di = 0; | |
return new ta(function() { | |
var ei = bi[zh ? ci - di : di]; | |
return di++ > ci ? va() : ua(yh, ai ? ei[0] : di - 1, ei[1]); | |
}); | |
} | |
return xh.__iteratorUncached(yh, zh); | |
} | |
h(tb, aa); | |
function tb() { | |
throw TypeError('Abstract'); | |
} | |
h(ub, tb); | |
function ub() {} | |
h(vb, tb); | |
function vb() {} | |
h(wb, tb); | |
function wb() {} | |
tb.Keyed = ub; | |
tb.Indexed = vb; | |
tb.Set = wb; | |
function xb(xh, yh) { | |
if (xh === yh || (xh !== xh && yh !== yh)) return true; | |
if (!xh || !yh) return false; | |
if (typeof xh.valueOf === 'function' && typeof yh.valueOf === 'function') { | |
xh = xh.valueOf(); | |
yh = yh.valueOf(); | |
if (xh === yh || (xh !== xh && yh !== yh)) return true; | |
if (!xh || !yh) return false; | |
} | |
if (typeof xh.equals === 'function' && typeof yh.equals === 'function' && xh.equals(yh)) return true; | |
return false; | |
} | |
function yb(xh, yh) { | |
return yh ? zb(yh, xh, '', { | |
'': xh | |
}) : ac(xh); | |
} | |
function zb(xh, yh, zh, ai) { | |
if (Array.isArray(yh)) return xh.call(ai, zh, db(yh).map(function(bi, ci) { | |
return zb(xh, bi, ci, yh); | |
})); | |
if (bc(yh)) return xh.call(ai, zh, cb(yh).map(function(bi, ci) { | |
return zb(xh, bi, ci, yh); | |
})); | |
return yh; | |
} | |
function ac(xh) { | |
if (Array.isArray(xh)) return db(xh).map(ac).toList(); | |
if (bc(xh)) return cb(xh).map(ac).toMap(); | |
return xh; | |
} | |
function bc(xh) { | |
return xh && (xh.constructor === Object || xh.constructor === (void 0)); | |
} | |
var cc = typeof Math.imul === 'function' && Math.imul(4294967295, 2) === -2 ? Math.imul : function xh(yh, zh) { | |
yh = yh | 0; | |
zh = zh | 0; | |
var ai = yh & 65535, | |
bi = zh & 65535; | |
return (ai * bi) + ((((yh >>> 16) * bi + ai * (zh >>> 16)) << 16) >>> 0) | 0; | |
}; | |
function dc(xh) { | |
return ((xh >>> 1) & 1073741824) | (xh & 3221225471); | |
} | |
function ec(xh) { | |
if (xh === false || xh === null || xh === (void 0)) return 0; | |
if (typeof xh.valueOf === 'function') { | |
xh = xh.valueOf(); | |
if (xh === false || xh === null || xh === (void 0)) return 0; | |
} | |
if (xh === true) return 1; | |
var yh = typeof xh; | |
if (yh === 'number') { | |
var zh = xh | 0; | |
if (zh !== xh) zh ^= xh * 4294967295; | |
while (xh > 4294967295) { | |
xh /= 4294967295; | |
zh ^= xh; | |
} | |
return dc(zh); | |
} | |
if (yh === 'string') return xh.length > pc ? fc(xh) : gc(xh); | |
if (typeof xh.hashCode === 'function') return xh.hashCode(); | |
return hc(xh); | |
} | |
function fc(xh) { | |
var yh = sc[xh]; | |
if (yh === (void 0)) { | |
yh = gc(xh); | |
if (rc === qc) { | |
rc = 0; | |
sc = {}; | |
} | |
rc++; | |
sc[xh] = yh; | |
} | |
return yh; | |
} | |
function gc(xh) { | |
var yh = 0; | |
for (var zh = 0; zh < xh.length; zh++) yh = 31 * yh + xh.charCodeAt(zh) | 0; | |
return dc(yh); | |
} | |
function hc(xh) { | |
var yh; | |
if (lc) { | |
yh = mc.get(xh); | |
if (yh !== (void 0)) return yh; | |
} | |
yh = xh[oc]; | |
if (yh !== (void 0)) return yh; | |
if (!jc) { | |
yh = xh.propertyIsEnumerable && xh.propertyIsEnumerable[oc]; | |
if (yh !== (void 0)) return yh; | |
yh = kc(xh); | |
if (yh !== (void 0)) return yh; | |
} | |
yh = ++nc; | |
if (nc & 1073741824) nc = 0; | |
if (lc) { | |
mc.set(xh, yh); | |
} else if (ic !== (void 0) && ic(xh) === false) { | |
throw new Error('Non-extensible objects are not allowed as keys.'); | |
} else if (jc) { | |
Object.defineProperty(xh, oc, { | |
enumerable: false, | |
configurable: false, | |
writable: false, | |
value: yh | |
}); | |
} else if (xh.propertyIsEnumerable !== (void 0) && xh.propertyIsEnumerable === xh.constructor.prototype.propertyIsEnumerable) { | |
xh.propertyIsEnumerable = function() { | |
return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments); | |
}; | |
xh.propertyIsEnumerable[oc] = yh; | |
} else if (xh.nodeType !== (void 0)) { | |
xh[oc] = yh; | |
} else throw new Error('Unable to set a non-enumerable property on object.'); | |
return yh; | |
} | |
var ic = Object.isExtensible, | |
jc = (function() { | |
try { | |
Object.defineProperty({}, '@', {}); | |
return true; | |
} catch (xh) { | |
return false; | |
} | |
}()); | |
function kc(xh) { | |
if (xh && xh.nodeType > 0) switch (xh.nodeType) { | |
case 1: | |
return xh.uniqueID; | |
case 9: | |
return xh.documentElement && xh.documentElement.uniqueID; | |
} | |
} | |
var lc = typeof WeakMap === 'function', | |
mc; | |
if (lc) mc = new WeakMap(); | |
var nc = 0, | |
oc = '__immutablehash__'; | |
if (typeof Symbol === 'function') oc = Symbol(oc); | |
var pc = 16, | |
qc = 255, | |
rc = 0, | |
sc = {}; | |
function tc(xh, yh) { | |
if (!xh) throw new Error(yh); | |
} | |
function uc(xh) { | |
tc(xh !== Infinity); | |
} | |
h(vc, cb); | |
function vc(xh, yh) { | |
this._iter = xh; | |
this._useKeys = yh; | |
this.size = xh.size; | |
} | |
vc.prototype.get = function(xh, yh) { | |
return this._iter.get(xh, yh); | |
}; | |
vc.prototype.has = function(xh) { | |
return this._iter.has(xh); | |
}; | |
vc.prototype.valueSeq = function() { | |
return this._iter.valueSeq(); | |
}; | |
vc.prototype.reverse = function() { | |
var xh = this, | |
yh = bd(this, true); | |
if (!this._useKeys) yh.valueSeq = function() { | |
return xh._iter.toSeq().reverse(); | |
}; | |
return yh; | |
}; | |
vc.prototype.map = function(xh, yh) { | |
var zh = this, | |
ai = ad(this, xh, yh); | |
if (!this._useKeys) ai.valueSeq = function() { | |
return zh._iter.toSeq().map(xh, yh); | |
}; | |
return ai; | |
}; | |
vc.prototype.__iterate = function(xh, yh) { | |
var zh = this, | |
ai; | |
return this._iter.__iterate(this._useKeys ? function(bi, ci) { | |
return xh(bi, ci, zh); | |
} : ((ai = yh ? sd(this) : 0), function(bi) { | |
return xh(bi, yh ? --ai : ai++, zh); | |
}), yh); | |
}; | |
vc.prototype.__iterator = function(xh, yh) { | |
if (this._useKeys) return this._iter.__iterator(xh, yh); | |
var zh = this._iter.__iterator(oa, yh), | |
ai = yh ? sd(this) : 0; | |
return new ta(function() { | |
var bi = zh.next(); | |
return bi.done ? bi : ua(xh, yh ? --ai : ai++, bi.value, bi); | |
}); | |
}; | |
vc.prototype[ma] = true; | |
h(wc, db); | |
function wc(xh) { | |
this._iter = xh; | |
this.size = xh.size; | |
} | |
wc.prototype.includes = function(xh) { | |
return this._iter.includes(xh); | |
}; | |
wc.prototype.__iterate = function(xh, yh) { | |
var zh = this, | |
ai = 0; | |
return this._iter.__iterate(function(bi) { | |
return xh(bi, ai++, zh); | |
}, yh); | |
}; | |
wc.prototype.__iterator = function(xh, yh) { | |
var zh = this._iter.__iterator(oa, yh), | |
ai = 0; | |
return new ta(function() { | |
var bi = zh.next(); | |
return bi.done ? bi : ua(xh, ai++, bi.value, bi); | |
}); | |
}; | |
h(xc, eb); | |
function xc(xh) { | |
this._iter = xh; | |
this.size = xh.size; | |
} | |
xc.prototype.has = function(xh) { | |
return this._iter.includes(xh); | |
}; | |
xc.prototype.__iterate = function(xh, yh) { | |
var zh = this; | |
return this._iter.__iterate(function(ai) { | |
return xh(ai, ai, zh); | |
}, yh); | |
}; | |
xc.prototype.__iterator = function(xh, yh) { | |
var zh = this._iter.__iterator(oa, yh); | |
return new ta(function() { | |
var ai = zh.next(); | |
return ai.done ? ai : ua(xh, ai.value, ai.value, ai); | |
}); | |
}; | |
h(yc, cb); | |
function yc(xh) { | |
this._iter = xh; | |
this.size = xh.size; | |
} | |
yc.prototype.entrySeq = function() { | |
return this._iter.toSeq(); | |
}; | |
yc.prototype.__iterate = function(xh, yh) { | |
var zh = this; | |
return this._iter.__iterate(function(ai) { | |
if (ai) { | |
rd(ai); | |
var bi = ea(ai); | |
return xh(bi ? ai.get(1) : ai[1], bi ? ai.get(0) : ai[0], zh); | |
} | |
}, yh); | |
}; | |
yc.prototype.__iterator = function(xh, yh) { | |
var zh = this._iter.__iterator(oa, yh); | |
return new ta(function() { | |
while (true) { | |
var ai = zh.next(); | |
if (ai.done) return ai; | |
var bi = ai.value; | |
if (bi) { | |
rd(bi); | |
var ci = ea(bi); | |
return ua(xh, ci ? bi.get(0) : bi[0], ci ? bi.get(1) : bi[1], ai); | |
} | |
} | |
}); | |
}; | |
wc.prototype.cacheResult = vc.prototype.cacheResult = xc.prototype.cacheResult = yc.prototype.cacheResult = vd; | |
function zc(xh) { | |
var yh = ud(xh); | |
yh._iter = xh; | |
yh.size = xh.size; | |
yh.flip = function() { | |
return xh; | |
}; | |
yh.reverse = function() { | |
var zh = xh.reverse.apply(this); | |
zh.flip = function() { | |
return xh.reverse(); | |
}; | |
return zh; | |
}; | |
yh.has = function(zh) { | |
return xh.includes(zh); | |
}; | |
yh.includes = function(zh) { | |
return xh.has(zh); | |
}; | |
yh.cacheResult = vd; | |
yh.__iterateUncached = function(zh, ai) { | |
var bi = this; | |
return xh.__iterate(function(ci, di) { | |
return zh(di, ci, bi) !== false; | |
}, ai); | |
}; | |
yh.__iteratorUncached = function(zh, ai) { | |
if (zh === pa) { | |
var bi = xh.__iterator(zh, ai); | |
return new ta(function() { | |
var ci = bi.next(); | |
if (!ci.done) { | |
var di = ci.value[0]; | |
ci.value[0] = ci.value[1]; | |
ci.value[1] = di; | |
} | |
return ci; | |
}); | |
} | |
return xh.__iterator(zh === oa ? na : oa, ai); | |
}; | |
return yh; | |
} | |
function ad(xh, yh, zh) { | |
var ai = ud(xh); | |
ai.size = xh.size; | |
ai.has = function(bi) { | |
return xh.has(bi); | |
}; | |
ai.get = function(bi, ci) { | |
var di = xh.get(bi, m); | |
return di === m ? ci : yh.call(zh, di, bi, xh); | |
}; | |
ai.__iterateUncached = function(bi, ci) { | |
var di = this; | |
return xh.__iterate(function(ei, fi, gi) { | |
return bi(yh.call(zh, ei, fi, gi), fi, di) !== false; | |
}, ci); | |
}; | |
ai.__iteratorUncached = function(bi, ci) { | |
var di = xh.__iterator(pa, ci); | |
return new ta(function() { | |
var ei = di.next(); | |
if (ei.done) return ei; | |
var fi = ei.value, | |
gi = fi[0]; | |
return ua(bi, gi, yh.call(zh, fi[1], gi, xh), ei); | |
}); | |
}; | |
return ai; | |
} | |
function bd(xh, yh) { | |
var zh = ud(xh); | |
zh._iter = xh; | |
zh.size = xh.size; | |
zh.reverse = function() { | |
return xh; | |
}; | |
if (xh.flip) zh.flip = function() { | |
var ai = zc(xh); | |
ai.reverse = function() { | |
return xh.flip(); | |
}; | |
return ai; | |
}; | |
zh.get = function(ai, bi) { | |
return xh.get(yh ? ai : -1 - ai, bi); | |
}; | |
zh.has = function(ai) { | |
return xh.has(yh ? ai : -1 - ai); | |
}; | |
zh.includes = function(ai) { | |
return xh.includes(ai); | |
}; | |
zh.cacheResult = vd; | |
zh.__iterate = function(ai, bi) { | |
var ci = this; | |
return xh.__iterate(function(di, ei) { | |
return ai(di, ei, ci); | |
}, !bi); | |
}; | |
zh.__iterator = function(ai, bi) { | |
return xh.__iterator(ai, !bi); | |
}; | |
return zh; | |
} | |
function cd(xh, yh, zh, ai) { | |
var bi = ud(xh); | |
if (ai) { | |
bi.has = function(ci) { | |
var di = xh.get(ci, m); | |
return di !== m && !!yh.call(zh, di, ci, xh); | |
}; | |
bi.get = function(ci, di) { | |
var ei = xh.get(ci, m); | |
return ei !== m && yh.call(zh, ei, ci, xh) ? ei : di; | |
}; | |
} | |
bi.__iterateUncached = function(ci, di) { | |
var ei = this, | |
fi = 0; | |
xh.__iterate(function(gi, hi, ii) { | |
if (yh.call(zh, gi, hi, ii)) { | |
fi++; | |
return ci(gi, ai ? hi : fi - 1, ei); | |
} | |
}, di); | |
return fi; | |
}; | |
bi.__iteratorUncached = function(ci, di) { | |
var ei = xh.__iterator(pa, di), | |
fi = 0; | |
return new ta(function() { | |
while (true) { | |
var gi = ei.next(); | |
if (gi.done) return gi; | |
var hi = gi.value, | |
ii = hi[0], | |
ji = hi[1]; | |
if (yh.call(zh, ji, ii, xh)) return ua(ci, ai ? ii : fi++, ji, gi); | |
} | |
}); | |
}; | |
return bi; | |
} | |
function dd(xh, yh, zh) { | |
var ai = yd().asMutable(); | |
xh.__iterate(function(bi, ci) { | |
ai.update(yh.call(zh, bi, ci, xh), 0, function(di) { | |
return di + 1; | |
}); | |
}); | |
return ai.asImmutable(); | |
} | |
function ed(xh, yh, zh) { | |
var ai = fa(xh), | |
bi = (ia(xh) ? xf() : yd()).asMutable(); | |
xh.__iterate(function(di, ei) { | |
bi.update(yh.call(zh, di, ei, xh), function(fi) { | |
return (fi = fi || [], fi.push(ai ? [ei, di] : di), fi); | |
}); | |
}); | |
var ci = td(xh); | |
return bi.map(function(di) { | |
return qd(xh, ci(di)); | |
}); | |
} | |
function fd(xh, yh, zh, ai) { | |
var bi = xh.size; | |
if (w(yh, zh, bi)) return xh; | |
var ci = x(yh, bi), | |
di = y(zh, bi); | |
if (ci !== ci || di !== di) return fd(xh.toSeq().cacheResult(), yh, zh, ai); | |
var ei = di - ci, | |
fi; | |
if (ei === ei) fi = ei < 0 ? 0 : ei; | |
var gi = ud(xh); | |
gi.size = fi; | |
if (!ai && kb(xh) && fi >= 0) gi.get = function(hi, ii) { | |
hi = u(this, hi); | |
return hi >= 0 && hi < fi ? xh.get(hi + ci, ii) : ii; | |
}; | |
gi.__iterateUncached = function(hi, ii) { | |
var ji = this; | |
if (fi === 0) return 0; | |
if (ii) return this.cacheResult().__iterate(hi, ii); | |
var ki = 0, | |
li = true, | |
mi = 0; | |
xh.__iterate(function(ni, oi) { | |
if (!(li && (li = ki++ < ci))) { | |
mi++; | |
return hi(ni, ai ? oi : mi - 1, ji) !== false && mi !== fi; | |
} | |
}); | |
return mi; | |
}; | |
gi.__iteratorUncached = function(hi, ii) { | |
if (fi !== 0 && ii) return this.cacheResult().__iterator(hi, ii); | |
var ji = fi !== 0 && xh.__iterator(hi, ii), | |
ki = 0, | |
li = 0; | |
return new ta(function() { | |
while (ki++ < ci) ji.next(); | |
if (++li > fi) return va(); | |
var mi = ji.next(); | |
if (ai || hi === oa) { | |
return mi; | |
} else if (hi === na) { | |
return ua(hi, li - 1, (void 0), mi); | |
} else return ua(hi, li - 1, mi.value[1], mi); | |
}); | |
}; | |
return gi; | |
} | |
function gd(xh, yh, zh) { | |
var ai = ud(xh); | |
ai.__iterateUncached = function(bi, ci) { | |
var di = this; | |
if (ci) return this.cacheResult().__iterate(bi, ci); | |
var ei = 0; | |
xh.__iterate(function(fi, gi, hi) { | |
return yh.call(zh, fi, gi, hi) && ++ei && bi(fi, gi, di); | |
}); | |
return ei; | |
}; | |
ai.__iteratorUncached = function(bi, ci) { | |
var di = this; | |
if (ci) return this.cacheResult().__iterator(bi, ci); | |
var ei = xh.__iterator(pa, ci), | |
fi = true; | |
return new ta(function() { | |
if (!fi) return va(); | |
var gi = ei.next(); | |
if (gi.done) return gi; | |
var hi = gi.value, | |
ii = hi[0], | |
ji = hi[1]; | |
if (!yh.call(zh, ji, ii, di)) { | |
fi = false; | |
return va(); | |
} | |
return bi === pa ? gi : ua(bi, ii, ji, gi); | |
}); | |
}; | |
return ai; | |
} | |
function hd(xh, yh, zh, ai) { | |
var bi = ud(xh); | |
bi.__iterateUncached = function(ci, di) { | |
var ei = this; | |
if (di) return this.cacheResult().__iterate(ci, di); | |
var fi = true, | |
gi = 0; | |
xh.__iterate(function(hi, ii, ji) { | |
if (!(fi && (fi = yh.call(zh, hi, ii, ji)))) { | |
gi++; | |
return ci(hi, ai ? ii : gi - 1, ei); | |
} | |
}); | |
return gi; | |
}; | |
bi.__iteratorUncached = function(ci, di) { | |
var ei = this; | |
if (di) return this.cacheResult().__iterator(ci, di); | |
var fi = xh.__iterator(pa, di), | |
gi = true, | |
hi = 0; | |
return new ta(function() { | |
var ii, ji, ki; | |
do { | |
ii = fi.next(); | |
if (ii.done) | |
if (ai || ci === oa) { | |
return ii; | |
} else if (ci === na) { | |
return ua(ci, hi++, (void 0), ii); | |
} else return ua(ci, hi++, ii.value[1], ii); | |
var li = ii.value; | |
ji = li[0]; | |
ki = li[1]; | |
gi && (gi = yh.call(zh, ki, ji, ei)); | |
} while (gi); | |
return ci === pa ? ii : ua(ci, ji, ki, ii); | |
}); | |
}; | |
return bi; | |
} | |
function id(xh, yh) { | |
var zh = fa(xh), | |
ai = [xh].concat(yh).map(function(di) { | |
if (!ea(di)) { | |
di = zh ? nb(di) : ob(Array.isArray(di) ? di : [di]); | |
} else if (zh) di = ba(di); | |
return di; | |
}).filter(function(di) { | |
return di.size !== 0; | |
}); | |
if (ai.length === 0) return xh; | |
if (ai.length === 1) { | |
var bi = ai[0]; | |
if (bi === xh || zh && fa(bi) || ga(xh) && ga(bi)) return bi; | |
} | |
var ci = new gb(ai); | |
if (zh) { | |
ci = ci.toKeyedSeq(); | |
} else if (!ga(xh)) ci = ci.toSetSeq(); | |
ci = ci.flatten(true); | |
ci.size = ai.reduce(function(di, ei) { | |
if (di !== (void 0)) { | |
var fi = ei.size; | |
if (fi !== (void 0)) return di + fi; | |
} | |
}, 0); | |
return ci; | |
} | |
function jd(xh, yh, zh) { | |
var ai = ud(xh); | |
ai.__iterateUncached = function(bi, ci) { | |
var di = 0, | |
ei = false; | |
function fi(gi, hi) { | |
var ii = this; | |
gi.__iterate(function(ji, ki) { | |
if ((!yh || hi < yh) && ea(ji)) { | |
fi(ji, hi + 1); | |
} else if (bi(ji, zh ? ki : di++, ii) === false) ei = true; | |
return !ei; | |
}, ci); | |
} | |
fi(xh, 0); | |
return di; | |
}; | |
ai.__iteratorUncached = function(bi, ci) { | |
var di = xh.__iterator(bi, ci), | |
ei = [], | |
fi = 0; | |
return new ta(function() { | |
while (di) { | |
var gi = di.next(); | |
if (gi.done !== false) { | |
di = ei.pop(); | |
continue; | |
} | |
var hi = gi.value; | |
if (bi === pa) hi = hi[1]; | |
if ((!yh || ei.length < yh) && ea(hi)) { | |
ei.push(di); | |
di = hi.__iterator(bi, ci); | |
} else return zh ? gi : ua(bi, fi++, hi, gi); | |
} | |
return va(); | |
}); | |
}; | |
return ai; | |
} | |
function kd(xh, yh, zh) { | |
var ai = td(xh); | |
return xh.toSeq().map(function(bi, ci) { | |
return ai(yh.call(zh, bi, ci, xh)); | |
}).flatten(true); | |
} | |
function ld(xh, yh) { | |
var zh = ud(xh); | |
zh.size = xh.size && xh.size * 2 - 1; | |
zh.__iterateUncached = function(ai, bi) { | |
var ci = this, | |
di = 0; | |
xh.__iterate(function(ei, fi) { | |
return (!di || ai(yh, di++, ci) !== false) && ai(ei, di++, ci) !== false; | |
}, bi); | |
return di; | |
}; | |
zh.__iteratorUncached = function(ai, bi) { | |
var ci = xh.__iterator(oa, bi), | |
di = 0, | |
ei; | |
return new ta(function() { | |
if (!ei || di % 2) { | |
ei = ci.next(); | |
if (ei.done) return ei; | |
} | |
return di % 2 ? ua(ai, di++, yh) : ua(ai, di++, ei.value, ei); | |
}); | |
}; | |
return zh; | |
} | |
function md(xh, yh, zh) { | |
if (!yh) yh = wd; | |
var ai = fa(xh), | |
bi = 0, | |
ci = xh.toSeq().map(function(di, ei) { | |
return [ei, di, bi++, zh ? zh(di, ei, xh) : di]; | |
}).toArray(); | |
ci.sort(function(di, ei) { | |
return yh(di[3], ei[3]) || di[2] - ei[2]; | |
}).forEach(ai ? function(di, ei) { | |
ci[ei].length = 2; | |
} : function(di, ei) { | |
ci[ei] = di[1]; | |
}); | |
return ai ? cb(ci) : ga(xh) ? db(ci) : eb(ci); | |
} | |
function nd(xh, yh, zh) { | |
if (!yh) yh = wd; | |
if (zh) { | |
var ai = xh.toSeq().map(function(bi, ci) { | |
return [bi, zh(bi, ci, xh)]; | |
}).reduce(function(bi, ci) { | |
return od(yh, bi[1], ci[1]) ? ci : bi; | |
}); | |
return ai && ai[0]; | |
} else return xh.reduce(function(bi, ci) { | |
return od(yh, bi, ci) ? ci : bi; | |
}); | |
} | |
function od(xh, yh, zh) { | |
var ai = xh(zh, yh); | |
return (ai === 0 && zh !== yh && (zh === (void 0) || zh === null || zh !== zh)) || ai > 0; | |
} | |
function pd(xh, yh, zh) { | |
var ai = ud(xh); | |
ai.size = new gb(zh).map(function(bi) { | |
return bi.size; | |
}).min(); | |
ai.__iterate = function(bi, ci) { | |
var di = this.__iterator(oa, ci), | |
ei, fi = 0; | |
while (!(ei = di.next()).done) | |
if (bi(ei.value, fi++, this) === false) break; | |
return fi; | |
}; | |
ai.__iteratorUncached = function(bi, ci) { | |
var di = zh.map(function(gi) { | |
return (gi = aa(gi), ya(ci ? gi.reverse() : gi)); | |
}), | |
ei = 0, | |
fi = false; | |
return new ta(function() { | |
var gi; | |
if (!fi) { | |
gi = di.map(function(hi) { | |
return hi.next(); | |
}); | |
fi = gi.some(function(hi) { | |
return hi.done; | |
}); | |
} | |
if (fi) return va(); | |
return ua(bi, ei++, yh.apply(null, gi.map(function(hi) { | |
return hi.value; | |
}))); | |
}); | |
}; | |
return ai; | |
} | |
function qd(xh, yh) { | |
return kb(xh) ? yh : xh.constructor(yh); | |
} | |
function rd(xh) { | |
if (xh !== Object(xh)) throw new TypeError('Expected [K, V] tuple: ' + xh); | |
} | |
function sd(xh) { | |
uc(xh.size); | |
return t(xh); | |
} | |
function td(xh) { | |
return fa(xh) ? ba : ga(xh) ? ca : da; | |
} | |
function ud(xh) { | |
return Object.create((fa(xh) ? cb : ga(xh) ? db : eb).prototype); | |
} | |
function vd() { | |
if (this._iter.cacheResult) { | |
this._iter.cacheResult(); | |
this.size = this._iter.size; | |
return this; | |
} else return bb.prototype.cacheResult.call(this); | |
} | |
function wd(xh, yh) { | |
return xh > yh ? 1 : xh < yh ? -1 : 0; | |
} | |
function xd(xh) { | |
var yh = ya(xh); | |
if (!yh) { | |
if (!ab(xh)) throw new TypeError('Expected iterable or array-like: ' + xh); | |
yh = ya(aa(xh)); | |
} | |
return yh; | |
} | |
h(yd, ub); | |
function yd(xh) { | |
return xh === null || xh === (void 0) ? me() : zd(xh) ? xh : me().withMutations(function(yh) { | |
var zh = ba(xh); | |
uc(zh.size); | |
zh.forEach(function(ai, bi) { | |
return yh.set(bi, ai); | |
}); | |
}); | |
} | |
yd.prototype.toString = function() { | |
return this.__toString('Map {', '}'); | |
}; | |
yd.prototype.get = function(xh, yh) { | |
return this._root ? this._root.get(0, (void 0), xh, yh) : yh; | |
}; | |
yd.prototype.set = function(xh, yh) { | |
return ne(this, xh, yh); | |
}; | |
yd.prototype.setIn = function(xh, yh) { | |
return this.updateIn(xh, m, function() { | |
return yh; | |
}); | |
}; | |
yd.prototype.remove = function(xh) { | |
return ne(this, xh, m); | |
}; | |
yd.prototype.deleteIn = function(xh) { | |
return this.updateIn(xh, function() { | |
return m; | |
}); | |
}; | |
yd.prototype.update = function(xh, yh, zh) { | |
return arguments.length === 1 ? xh(this) : this.updateIn([xh], yh, zh); | |
}; | |
yd.prototype.updateIn = function(xh, yh, zh) { | |
if (!zh) { | |
zh = yh; | |
yh = (void 0); | |
} | |
var ai = xe(this, xd(xh), yh, zh); | |
return ai === m ? (void 0) : ai; | |
}; | |
yd.prototype.clear = function() { | |
if (this.size === 0) return this; | |
if (this.__ownerID) { | |
this.size = 0; | |
this._root = null; | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return me(); | |
}; | |
yd.prototype.merge = function() { | |
return ue(this, (void 0), arguments); | |
}; | |
yd.prototype.mergeWith = function(xh) { | |
var yh = g.call(arguments, 1); | |
return ue(this, xh, yh); | |
}; | |
yd.prototype.mergeIn = function(xh) { | |
var yh = g.call(arguments, 1); | |
return this.updateIn(xh, me(), function(zh) { | |
return typeof zh.merge === 'function' ? zh.merge.apply(zh, yh) : yh[yh.length - 1]; | |
}); | |
}; | |
yd.prototype.mergeDeep = function() { | |
return ue(this, ve((void 0)), arguments); | |
}; | |
yd.prototype.mergeDeepWith = function(xh) { | |
var yh = g.call(arguments, 1); | |
return ue(this, ve(xh), yh); | |
}; | |
yd.prototype.mergeDeepIn = function(xh) { | |
var yh = g.call(arguments, 1); | |
return this.updateIn(xh, me(), function(zh) { | |
return typeof zh.mergeDeep === 'function' ? zh.mergeDeep.apply(zh, yh) : yh[yh.length - 1]; | |
}); | |
}; | |
yd.prototype.sort = function(xh) { | |
return xf(md(this, xh)); | |
}; | |
yd.prototype.sortBy = function(xh, yh) { | |
return xf(md(this, yh, xh)); | |
}; | |
yd.prototype.withMutations = function(xh) { | |
var yh = this.asMutable(); | |
xh(yh); | |
return yh.wasAltered() ? yh.__ensureOwner(this.__ownerID) : this; | |
}; | |
yd.prototype.asMutable = function() { | |
return this.__ownerID ? this : this.__ensureOwner(new r()); | |
}; | |
yd.prototype.asImmutable = function() { | |
return this.__ensureOwner(); | |
}; | |
yd.prototype.wasAltered = function() { | |
return this.__altered; | |
}; | |
yd.prototype.__iterator = function(xh, yh) { | |
return new he(this, xh, yh); | |
}; | |
yd.prototype.__iterate = function(xh, yh) { | |
var zh = this, | |
ai = 0; | |
this._root && this._root.iterate(function(bi) { | |
ai++; | |
return xh(bi[1], bi[0], zh); | |
}, yh); | |
return ai; | |
}; | |
yd.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
if (!xh) { | |
this.__ownerID = xh; | |
this.__altered = false; | |
return this; | |
} | |
return ke(this.size, this._root, xh, this.__hash); | |
}; | |
function zd(xh) { | |
return !!(xh && xh[ae]); | |
} | |
yd.isMap = zd; | |
var ae = '@@__IMMUTABLE_MAP__@@', | |
be = yd.prototype; | |
be[ae] = true; | |
be[i] = be.remove; | |
be.removeIn = be.deleteIn; | |
function ce(xh, yh) { | |
this.ownerID = xh; | |
this.entries = yh; | |
} | |
ce.prototype.get = function(xh, yh, zh, ai) { | |
var bi = this.entries; | |
for (var ci = 0, di = bi.length; ci < di; ci++) | |
if (xb(zh, bi[ci][0])) return bi[ci][1]; | |
return ai; | |
}; | |
ce.prototype.update = function(xh, yh, zh, ai, bi, ci, di) { | |
var ei = bi === m, | |
fi = this.entries, | |
gi = 0; | |
for (var hi = fi.length; gi < hi; gi++) | |
if (xb(ai, fi[gi][0])) break; | |
var ii = gi < hi; | |
if (ii ? fi[gi][1] === bi : ei) return this; | |
q(di); | |
(ei || !ii) && q(ci); | |
if (ei && fi.length === 1) return; | |
if (!ii && !ei && fi.length >= cf) return re(xh, fi, ai, bi); | |
var ji = xh && xh === this.ownerID, | |
ki = ji ? fi : s(fi); | |
if (ii) { | |
if (ei) { | |
gi === hi - 1 ? ki.pop() : (ki[gi] = ki.pop()); | |
} else ki[gi] = [ai, bi]; | |
} else ki.push([ai, bi]); | |
if (ji) { | |
this.entries = ki; | |
return this; | |
} | |
return new ce(xh, ki); | |
}; | |
function de(xh, yh, zh) { | |
this.ownerID = xh; | |
this.bitmap = yh; | |
this.nodes = zh; | |
} | |
de.prototype.get = function(xh, yh, zh, ai) { | |
if (yh === (void 0)) yh = ec(zh); | |
var bi = (1 << ((xh === 0 ? yh : yh >>> xh) & l)), | |
ci = this.bitmap; | |
return (ci & bi) === 0 ? ai : this.nodes[ye(ci & (bi - 1))].get(xh + j, yh, zh, ai); | |
}; | |
de.prototype.update = function(xh, yh, zh, ai, bi, ci, di) { | |
if (zh === (void 0)) zh = ec(ai); | |
var ei = (yh === 0 ? zh : zh >>> yh) & l, | |
fi = 1 << ei, | |
gi = this.bitmap, | |
hi = (gi & fi) !== 0; | |
if (!hi && bi === m) return this; | |
var ii = ye(gi & (fi - 1)), | |
ji = this.nodes, | |
ki = hi ? ji[ii] : (void 0), | |
li = oe(ki, xh, yh + j, zh, ai, bi, ci, di); | |
if (li === ki) return this; | |
if (!hi && li && ji.length >= df) return te(xh, ji, gi, ei, li); | |
if (hi && !li && ji.length === 2 && pe(ji[ii ^ 1])) return ji[ii ^ 1]; | |
if (hi && li && ji.length === 1 && pe(li)) return li; | |
var mi = xh && xh === this.ownerID, | |
ni = hi ? li ? gi : gi ^ fi : gi | fi, | |
oi = hi ? li ? ze(ji, ii, li, mi) : bf(ji, ii, mi) : af(ji, ii, li, mi); | |
if (mi) { | |
this.bitmap = ni; | |
this.nodes = oi; | |
return this; | |
} | |
return new de(xh, ni, oi); | |
}; | |
function ee(xh, yh, zh) { | |
this.ownerID = xh; | |
this.count = yh; | |
this.nodes = zh; | |
} | |
ee.prototype.get = function(xh, yh, zh, ai) { | |
if (yh === (void 0)) yh = ec(zh); | |
var bi = (xh === 0 ? yh : yh >>> xh) & l, | |
ci = this.nodes[bi]; | |
return ci ? ci.get(xh + j, yh, zh, ai) : ai; | |
}; | |
ee.prototype.update = function(xh, yh, zh, ai, bi, ci, di) { | |
if (zh === (void 0)) zh = ec(ai); | |
var ei = (yh === 0 ? zh : zh >>> yh) & l, | |
fi = bi === m, | |
gi = this.nodes, | |
hi = gi[ei]; | |
if (fi && !hi) return this; | |
var ii = oe(hi, xh, yh + j, zh, ai, bi, ci, di); | |
if (ii === hi) return this; | |
var ji = this.count; | |
if (!hi) { | |
ji++; | |
} else if (!ii) { | |
ji--; | |
if (ji < ef) return se(xh, gi, ji, ei); | |
} | |
var ki = xh && xh === this.ownerID, | |
li = ze(gi, ei, ii, ki); | |
if (ki) { | |
this.count = ji; | |
this.nodes = li; | |
return this; | |
} | |
return new ee(xh, ji, li); | |
}; | |
function fe(xh, yh, zh) { | |
this.ownerID = xh; | |
this.keyHash = yh; | |
this.entries = zh; | |
} | |
fe.prototype.get = function(xh, yh, zh, ai) { | |
var bi = this.entries; | |
for (var ci = 0, di = bi.length; ci < di; ci++) | |
if (xb(zh, bi[ci][0])) return bi[ci][1]; | |
return ai; | |
}; | |
fe.prototype.update = function(xh, yh, zh, ai, bi, ci, di) { | |
if (zh === (void 0)) zh = ec(ai); | |
var ei = bi === m; | |
if (zh !== this.keyHash) { | |
if (ei) return this; | |
q(di); | |
q(ci); | |
return qe(this, xh, yh, zh, [ai, bi]); | |
} | |
var fi = this.entries, | |
gi = 0; | |
for (var hi = fi.length; gi < hi; gi++) | |
if (xb(ai, fi[gi][0])) break; | |
var ii = gi < hi; | |
if (ii ? fi[gi][1] === bi : ei) return this; | |
q(di); | |
(ei || !ii) && q(ci); | |
if (ei && hi === 2) return new ge(xh, this.keyHash, fi[gi ^ 1]); | |
var ji = xh && xh === this.ownerID, | |
ki = ji ? fi : s(fi); | |
if (ii) { | |
if (ei) { | |
gi === hi - 1 ? ki.pop() : (ki[gi] = ki.pop()); | |
} else ki[gi] = [ai, bi]; | |
} else ki.push([ai, bi]); | |
if (ji) { | |
this.entries = ki; | |
return this; | |
} | |
return new fe(xh, this.keyHash, ki); | |
}; | |
function ge(xh, yh, zh) { | |
this.ownerID = xh; | |
this.keyHash = yh; | |
this.entry = zh; | |
} | |
ge.prototype.get = function(xh, yh, zh, ai) { | |
return xb(zh, this.entry[0]) ? this.entry[1] : ai; | |
}; | |
ge.prototype.update = function(xh, yh, zh, ai, bi, ci, di) { | |
var ei = bi === m, | |
fi = xb(ai, this.entry[0]); | |
if (fi ? bi === this.entry[1] : ei) return this; | |
q(di); | |
if (ei) { | |
q(ci); | |
return; | |
} | |
if (fi) { | |
if (xh && xh === this.ownerID) { | |
this.entry[1] = bi; | |
return this; | |
} | |
return new ge(xh, this.keyHash, [ai, bi]); | |
} | |
q(ci); | |
return qe(this, xh, yh, ec(ai), [ai, bi]); | |
}; | |
ce.prototype.iterate = fe.prototype.iterate = function(xh, yh) { | |
var zh = this.entries; | |
for (var ai = 0, bi = zh.length - 1; ai <= bi; ai++) | |
if (xh(zh[yh ? bi - ai : ai]) === false) return false; | |
}; | |
de.prototype.iterate = ee.prototype.iterate = function(xh, yh) { | |
var zh = this.nodes; | |
for (var ai = 0, bi = zh.length - 1; ai <= bi; ai++) { | |
var ci = zh[yh ? bi - ai : ai]; | |
if (ci && ci.iterate(xh, yh) === false) return false; | |
} | |
}; | |
ge.prototype.iterate = function(xh, yh) { | |
return xh(this.entry); | |
}; | |
h(he, ta); | |
function he(xh, yh, zh) { | |
this._type = yh; | |
this._reverse = zh; | |
this._stack = xh._root && je(xh._root); | |
} | |
he.prototype.next = function() { | |
var xh = this._type, | |
yh = this._stack; | |
while (yh) { | |
var zh = yh.node, | |
ai = yh.index++, | |
bi; | |
if (zh.entry) { | |
if (ai === 0) return ie(xh, zh.entry); | |
} else if (zh.entries) { | |
bi = zh.entries.length - 1; | |
if (ai <= bi) return ie(xh, zh.entries[this._reverse ? bi - ai : ai]); | |
} else { | |
bi = zh.nodes.length - 1; | |
if (ai <= bi) { | |
var ci = zh.nodes[this._reverse ? bi - ai : ai]; | |
if (ci) { | |
if (ci.entry) return ie(xh, ci.entry); | |
yh = this._stack = je(ci, yh); | |
} | |
continue; | |
} | |
} | |
yh = this._stack = this._stack.__prev; | |
} | |
return va(); | |
}; | |
function ie(xh, yh) { | |
return ua(xh, yh[0], yh[1]); | |
} | |
function je(xh, yh) { | |
return { | |
node: xh, | |
index: 0, | |
__prev: yh | |
}; | |
} | |
function ke(xh, yh, zh, ai) { | |
var bi = Object.create(be); | |
bi.size = xh; | |
bi._root = yh; | |
bi.__ownerID = zh; | |
bi.__hash = ai; | |
bi.__altered = false; | |
return bi; | |
} | |
var le; | |
function me() { | |
return le || (le = ke(0)); | |
} | |
function ne(xh, yh, zh) { | |
var ai, bi; | |
if (!xh._root) { | |
if (zh === m) return xh; | |
bi = 1; | |
ai = new ce(xh.__ownerID, [ | |
[yh, zh] | |
]); | |
} else { | |
var ci = p(n), | |
di = p(o); | |
ai = oe(xh._root, xh.__ownerID, 0, (void 0), yh, zh, ci, di); | |
if (!di.value) return xh; | |
bi = xh.size + (ci.value ? zh === m ? -1 : 1 : 0); | |
} | |
if (xh.__ownerID) { | |
xh.size = bi; | |
xh._root = ai; | |
xh.__hash = (void 0); | |
xh.__altered = true; | |
return xh; | |
} | |
return ai ? ke(bi, ai) : me(); | |
} | |
function oe(xh, yh, zh, ai, bi, ci, di, ei) { | |
if (!xh) { | |
if (ci === m) return xh; | |
q(ei); | |
q(di); | |
return new ge(yh, ai, [bi, ci]); | |
} | |
return xh.update(yh, zh, ai, bi, ci, di, ei); | |
} | |
function pe(xh) { | |
return xh.constructor === ge || xh.constructor === fe; | |
} | |
function qe(xh, yh, zh, ai, bi) { | |
if (xh.keyHash === ai) return new fe(yh, ai, [xh.entry, bi]); | |
var ci = (zh === 0 ? xh.keyHash : xh.keyHash >>> zh) & l, | |
di = (zh === 0 ? ai : ai >>> zh) & l, | |
ei, fi = ci === di ? [qe(xh, yh, zh + j, ai, bi)] : ((ei = new ge(yh, ai, bi)), ci < di ? [xh, ei] : [ei, xh]); | |
return new de(yh, (1 << ci) | (1 << di), fi); | |
} | |
function re(xh, yh, zh, ai) { | |
if (!xh) xh = new r(); | |
var bi = new ge(xh, ec(zh), [zh, ai]); | |
for (var ci = 0; ci < yh.length; ci++) { | |
var di = yh[ci]; | |
bi = bi.update(xh, 0, (void 0), di[0], di[1]); | |
} | |
return bi; | |
} | |
function se(xh, yh, zh, ai) { | |
var bi = 0, | |
ci = 0, | |
di = new Array(zh); | |
for (var ei = 0, fi = 1, gi = yh.length; ei < gi; ei++, fi <<= 1) { | |
var hi = yh[ei]; | |
if (hi !== (void 0) && ei !== ai) { | |
bi |= fi; | |
di[ci++] = hi; | |
} | |
} | |
return new de(xh, bi, di); | |
} | |
function te(xh, yh, zh, ai, bi) { | |
var ci = 0, | |
di = new Array(k); | |
for (var ei = 0; zh !== 0; ei++, zh >>>= 1) di[ei] = zh & 1 ? yh[ci++] : (void 0); | |
di[ai] = bi; | |
return new ee(xh, ci + 1, di); | |
} | |
function ue(xh, yh, zh) { | |
var ai = []; | |
for (var bi = 0; bi < zh.length; bi++) { | |
var ci = zh[bi], | |
di = ba(ci); | |
if (!ea(ci)) di = di.map(function(ei) { | |
return yb(ei); | |
}); | |
ai.push(di); | |
} | |
return we(xh, yh, ai); | |
} | |
function ve(xh) { | |
return function(yh, zh, ai) { | |
return yh && yh.mergeDeepWith && ea(zh) ? yh.mergeDeepWith(xh, zh) : xh ? xh(yh, zh, ai) : zh; | |
}; | |
} | |
function we(xh, yh, zh) { | |
zh = zh.filter(function(ai) { | |
return ai.size !== 0; | |
}); | |
if (zh.length === 0) return xh; | |
if (xh.size === 0 && !xh.__ownerID && zh.length === 1) return xh.constructor(zh[0]); | |
return xh.withMutations(function(ai) { | |
var bi = yh ? function(di, ei) { | |
ai.update(ei, m, function(fi) { | |
return fi === m ? di : yh(fi, di, ei); | |
}); | |
} : function(di, ei) { | |
ai.set(ei, di); | |
}; | |
for (var ci = 0; ci < zh.length; ci++) zh[ci].forEach(bi); | |
}); | |
} | |
function xe(xh, yh, zh, ai) { | |
var bi = xh === m, | |
ci = yh.next(); | |
if (ci.done) { | |
var di = bi ? zh : xh, | |
ei = ai(di); | |
return ei === di ? xh : ei; | |
} | |
tc(bi || (xh && xh.set)); | |
var fi = ci.value, | |
gi = bi ? m : xh.get(fi, m), | |
hi = xe(gi, yh, zh, ai); | |
return hi === gi ? xh : hi === m ? xh.remove(fi) : (bi ? me() : xh).set(fi, hi); | |
} | |
function ye(xh) { | |
xh = xh - ((xh >> 1) & 1431655765); | |
xh = (xh & 858993459) + ((xh >> 2) & 858993459); | |
xh = (xh + (xh >> 4)) & 252645135; | |
xh = xh + (xh >> 8); | |
xh = xh + (xh >> 16); | |
return xh & 127; | |
} | |
function ze(xh, yh, zh, ai) { | |
var bi = ai ? xh : s(xh); | |
bi[yh] = zh; | |
return bi; | |
} | |
function af(xh, yh, zh, ai) { | |
var bi = xh.length + 1; | |
if (ai && yh + 1 === bi) { | |
xh[yh] = zh; | |
return xh; | |
} | |
var ci = new Array(bi), | |
di = 0; | |
for (var ei = 0; ei < bi; ei++) | |
if (ei === yh) { | |
ci[ei] = zh; | |
di = -1; | |
} else ci[ei] = xh[ei + di]; | |
return ci; | |
} | |
function bf(xh, yh, zh) { | |
var ai = xh.length - 1; | |
if (zh && yh === ai) { | |
xh.pop(); | |
return xh; | |
} | |
var bi = new Array(ai), | |
ci = 0; | |
for (var di = 0; di < ai; di++) { | |
if (di === yh) ci = 1; | |
bi[di] = xh[di + ci]; | |
} | |
return bi; | |
} | |
var cf = k / 4, | |
df = k / 2, | |
ef = k / 4; | |
h(ff, vb); | |
function ff(xh) { | |
var yh = pf(); | |
if (xh === null || xh === (void 0)) return yh; | |
if (gf(xh)) return xh; | |
var zh = ca(xh), | |
ai = zh.size; | |
if (ai === 0) return yh; | |
uc(ai); | |
if (ai > 0 && ai < k) return nf(0, ai, j, null, new kf(zh.toArray())); | |
return yh.withMutations(function(bi) { | |
bi.setSize(ai); | |
zh.forEach(function(ci, di) { | |
return bi.set(di, ci); | |
}); | |
}); | |
} | |
ff.of = function() { | |
return this(arguments); | |
}; | |
ff.prototype.toString = function() { | |
return this.__toString('List [', ']'); | |
}; | |
ff.prototype.get = function(xh, yh) { | |
xh = u(this, xh); | |
if (xh < 0 || xh >= this.size) return yh; | |
xh += this._origin; | |
var zh = tf(this, xh); | |
return zh && zh.array[xh & l]; | |
}; | |
ff.prototype.set = function(xh, yh) { | |
return qf(this, xh, yh); | |
}; | |
ff.prototype.remove = function(xh) { | |
return !this.has(xh) ? this : xh === 0 ? this.shift() : xh === this.size - 1 ? this.pop() : this.splice(xh, 1); | |
}; | |
ff.prototype.clear = function() { | |
if (this.size === 0) return this; | |
if (this.__ownerID) { | |
this.size = this._origin = this._capacity = 0; | |
this._level = j; | |
this._root = this._tail = null; | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return pf(); | |
}; | |
ff.prototype.push = function() { | |
var xh = arguments, | |
yh = this.size; | |
return this.withMutations(function(zh) { | |
uf(zh, 0, yh + xh.length); | |
for (var ai = 0; ai < xh.length; ai++) zh.set(yh + ai, xh[ai]); | |
}); | |
}; | |
ff.prototype.pop = function() { | |
return uf(this, 0, -1); | |
}; | |
ff.prototype.unshift = function() { | |
var xh = arguments; | |
return this.withMutations(function(yh) { | |
uf(yh, -xh.length); | |
for (var zh = 0; zh < xh.length; zh++) yh.set(zh, xh[zh]); | |
}); | |
}; | |
ff.prototype.shift = function() { | |
return uf(this, 1); | |
}; | |
ff.prototype.merge = function() { | |
return vf(this, (void 0), arguments); | |
}; | |
ff.prototype.mergeWith = function(xh) { | |
var yh = g.call(arguments, 1); | |
return vf(this, xh, yh); | |
}; | |
ff.prototype.mergeDeep = function() { | |
return vf(this, ve((void 0)), arguments); | |
}; | |
ff.prototype.mergeDeepWith = function(xh) { | |
var yh = g.call(arguments, 1); | |
return vf(this, ve(xh), yh); | |
}; | |
ff.prototype.setSize = function(xh) { | |
return uf(this, 0, xh); | |
}; | |
ff.prototype.slice = function(xh, yh) { | |
var zh = this.size; | |
if (w(xh, yh, zh)) return this; | |
return uf(this, x(xh, zh), y(yh, zh)); | |
}; | |
ff.prototype.__iterator = function(xh, yh) { | |
var zh = 0, | |
ai = mf(this, yh); | |
return new ta(function() { | |
var bi = ai(); | |
return bi === lf ? va() : ua(xh, zh++, bi); | |
}); | |
}; | |
ff.prototype.__iterate = function(xh, yh) { | |
var zh = 0, | |
ai = mf(this, yh), | |
bi; | |
while ((bi = ai()) !== lf) | |
if (xh(bi, zh++, this) === false) break; | |
return zh; | |
}; | |
ff.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
if (!xh) { | |
this.__ownerID = xh; | |
return this; | |
} | |
return nf(this._origin, this._capacity, this._level, this._root, this._tail, xh, this.__hash); | |
}; | |
function gf(xh) { | |
return !!(xh && xh[hf]); | |
} | |
ff.isList = gf; | |
var hf = '@@__IMMUTABLE_LIST__@@', | |
jf = ff.prototype; | |
jf[hf] = true; | |
jf[i] = jf.remove; | |
jf.setIn = be.setIn; | |
jf.deleteIn = jf.removeIn = be.removeIn; | |
jf.update = be.update; | |
jf.updateIn = be.updateIn; | |
jf.mergeIn = be.mergeIn; | |
jf.mergeDeepIn = be.mergeDeepIn; | |
jf.withMutations = be.withMutations; | |
jf.asMutable = be.asMutable; | |
jf.asImmutable = be.asImmutable; | |
jf.wasAltered = be.wasAltered; | |
function kf(xh, yh) { | |
this.array = xh; | |
this.ownerID = yh; | |
} | |
kf.prototype.removeBefore = function(xh, yh, zh) { | |
if (zh === yh ? 1 << yh : this.array.length === 0) return this; | |
var ai = (zh >>> yh) & l; | |
if (ai >= this.array.length) return new kf([], xh); | |
var bi = ai === 0, | |
ci; | |
if (yh > 0) { | |
var di = this.array[ai]; | |
ci = di && di.removeBefore(xh, yh - j, zh); | |
if (ci === di && bi) return this; | |
} | |
if (bi && !ci) return this; | |
var ei = sf(this, xh); | |
if (!bi) | |
for (var fi = 0; fi < ai; fi++) ei.array[fi] = (void 0); | |
if (ci) ei.array[ai] = ci; | |
return ei; | |
}; | |
kf.prototype.removeAfter = function(xh, yh, zh) { | |
if (zh === yh ? 1 << yh : this.array.length === 0) return this; | |
var ai = ((zh - 1) >>> yh) & l; | |
if (ai >= this.array.length) return this; | |
var bi = ai === this.array.length - 1, | |
ci; | |
if (yh > 0) { | |
var di = this.array[ai]; | |
ci = di && di.removeAfter(xh, yh - j, zh); | |
if (ci === di && bi) return this; | |
} | |
if (bi && !ci) return this; | |
var ei = sf(this, xh); | |
if (!bi) ei.array.pop(); | |
if (ci) ei.array[ai] = ci; | |
return ei; | |
}; | |
var lf = {}; | |
function mf(xh, yh) { | |
var zh = xh._origin, | |
ai = xh._capacity, | |
bi = wf(ai), | |
ci = xh._tail; | |
return di(xh._root, xh._level, 0); | |
function di(gi, hi, ii) { | |
return hi === 0 ? ei(gi, ii) : fi(gi, hi, ii); | |
} | |
function ei(gi, hi) { | |
var ii = hi === bi ? ci && ci.array : gi && gi.array, | |
ji = hi > zh ? 0 : zh - hi, | |
ki = ai - hi; | |
if (ki > k) ki = k; | |
return function() { | |
if (ji === ki) return lf; | |
var li = yh ? --ki : ji++; | |
return ii && ii[li]; | |
}; | |
} | |
function fi(gi, hi, ii) { | |
var ji, ki = gi && gi.array, | |
li = ii > zh ? 0 : (zh - ii) >> hi, | |
mi = ((ai - ii) >> hi) + 1; | |
if (mi > k) mi = k; | |
return function() { | |
do { | |
if (ji) { | |
var ni = ji(); | |
if (ni !== lf) return ni; | |
ji = null; | |
} | |
if (li === mi) return lf; | |
var oi = yh ? --mi : li++; | |
ji = di(ki && ki[oi], hi - j, ii + (oi << hi)); | |
} while (true); | |
}; | |
} | |
} | |
function nf(xh, yh, zh, ai, bi, ci, di) { | |
var ei = Object.create(jf); | |
ei.size = yh - xh; | |
ei._origin = xh; | |
ei._capacity = yh; | |
ei._level = zh; | |
ei._root = ai; | |
ei._tail = bi; | |
ei.__ownerID = ci; | |
ei.__hash = di; | |
ei.__altered = false; | |
return ei; | |
} | |
var of; | |
function pf() { | |
return of || (of = nf(0, 0, j)); | |
} | |
function qf(xh, yh, zh) { | |
yh = u(xh, yh); | |
if (yh >= xh.size || yh < 0) return xh.withMutations(function(di) { | |
yh < 0 ? uf(di, yh).set(0, zh) : uf(di, 0, yh + 1).set(yh, zh); | |
}); | |
yh += xh._origin; | |
var ai = xh._tail, | |
bi = xh._root, | |
ci = p(o); | |
if (yh >= wf(xh._capacity)) { | |
ai = rf(ai, xh.__ownerID, 0, yh, zh, ci); | |
} else bi = rf(bi, xh.__ownerID, xh._level, yh, zh, ci); | |
if (!ci.value) return xh; | |
if (xh.__ownerID) { | |
xh._root = bi; | |
xh._tail = ai; | |
xh.__hash = (void 0); | |
xh.__altered = true; | |
return xh; | |
} | |
return nf(xh._origin, xh._capacity, xh._level, bi, ai); | |
} | |
function rf(xh, yh, zh, ai, bi, ci) { | |
var di = (ai >>> zh) & l, | |
ei = xh && di < xh.array.length; | |
if (!ei && bi === (void 0)) return xh; | |
var fi; | |
if (zh > 0) { | |
var gi = xh && xh.array[di], | |
hi = rf(gi, yh, zh - j, ai, bi, ci); | |
if (hi === gi) return xh; | |
fi = sf(xh, yh); | |
fi.array[di] = hi; | |
return fi; | |
} | |
if (ei && xh.array[di] === bi) return xh; | |
q(ci); | |
fi = sf(xh, yh); | |
if (bi === (void 0) && di === fi.array.length - 1) { | |
fi.array.pop(); | |
} else fi.array[di] = bi; | |
return fi; | |
} | |
function sf(xh, yh) { | |
if (yh && xh && yh === xh.ownerID) return xh; | |
return new kf(xh ? xh.array.slice() : [], yh); | |
} | |
function tf(xh, yh) { | |
if (yh >= wf(xh._capacity)) return xh._tail; | |
if (yh < 1 << (xh._level + j)) { | |
var zh = xh._root, | |
ai = xh._level; | |
while (zh && ai > 0) { | |
zh = zh.array[(yh >>> ai) & l]; | |
ai -= j; | |
} | |
return zh; | |
} | |
} | |
function uf(xh, yh, zh) { | |
var ai = xh.__ownerID || new r(), | |
bi = xh._origin, | |
ci = xh._capacity, | |
di = bi + yh, | |
ei = zh === (void 0) ? ci : zh < 0 ? ci + zh : bi + zh; | |
if (di === bi && ei === ci) return xh; | |
if (di >= ei) return xh.clear(); | |
var fi = xh._level, | |
gi = xh._root, | |
hi = 0; | |
while (di + hi < 0) { | |
gi = new kf(gi && gi.array.length ? [(void 0), gi] : [], ai); | |
fi += j; | |
hi += 1 << fi; | |
} | |
if (hi) { | |
di += hi; | |
bi += hi; | |
ei += hi; | |
ci += hi; | |
} | |
var ii = wf(ci), | |
ji = wf(ei); | |
while (ji >= 1 << (fi + j)) { | |
gi = new kf(gi && gi.array.length ? [gi] : [], ai); | |
fi += j; | |
} | |
var ki = xh._tail, | |
li = ji < ii ? tf(xh, ei - 1) : ji > ii ? new kf([], ai) : ki; | |
if (ki && ji > ii && di < ci && ki.array.length) { | |
gi = sf(gi, ai); | |
var mi = gi; | |
for (var ni = fi; ni > j; ni -= j) { | |
var oi = (ii >>> ni) & l; | |
mi = mi.array[oi] = sf(mi.array[oi], ai); | |
} | |
mi.array[(ii >>> j) & l] = ki; | |
} | |
if (ei < ci) li = li && li.removeAfter(ai, 0, ei); | |
if (di >= ji) { | |
di -= ji; | |
ei -= ji; | |
fi = j; | |
gi = null; | |
li = li && li.removeBefore(ai, 0, di); | |
} else if (di > bi || ji < ii) { | |
hi = 0; | |
while (gi) { | |
var pi = (di >>> fi) & l; | |
if (pi !== (ji >>> fi) & l) break; | |
if (pi) hi += (1 << fi) * pi; | |
fi -= j; | |
gi = gi.array[pi]; | |
} | |
if (gi && di > bi) gi = gi.removeBefore(ai, fi, di - hi); | |
if (gi && ji < ii) gi = gi.removeAfter(ai, fi, ji - hi); | |
if (hi) { | |
di -= hi; | |
ei -= hi; | |
} | |
} | |
if (xh.__ownerID) { | |
xh.size = ei - di; | |
xh._origin = di; | |
xh._capacity = ei; | |
xh._level = fi; | |
xh._root = gi; | |
xh._tail = li; | |
xh.__hash = (void 0); | |
xh.__altered = true; | |
return xh; | |
} | |
return nf(di, ei, fi, gi, li); | |
} | |
function vf(xh, yh, zh) { | |
var ai = [], | |
bi = 0; | |
for (var ci = 0; ci < zh.length; ci++) { | |
var di = zh[ci], | |
ei = ca(di); | |
if (ei.size > bi) bi = ei.size; | |
if (!ea(di)) ei = ei.map(function(fi) { | |
return yb(fi); | |
}); | |
ai.push(ei); | |
} | |
if (bi > xh.size) xh = xh.setSize(bi); | |
return we(xh, yh, ai); | |
} | |
function wf(xh) { | |
return xh < k ? 0 : (((xh - 1) >>> j) << j); | |
} | |
h(xf, yd); | |
function xf(xh) { | |
return xh === null || xh === (void 0) ? bg() : yf(xh) ? xh : bg().withMutations(function(yh) { | |
var zh = ba(xh); | |
uc(zh.size); | |
zh.forEach(function(ai, bi) { | |
return yh.set(bi, ai); | |
}); | |
}); | |
} | |
xf.of = function() { | |
return this(arguments); | |
}; | |
xf.prototype.toString = function() { | |
return this.__toString('OrderedMap {', '}'); | |
}; | |
xf.prototype.get = function(xh, yh) { | |
var zh = this._map.get(xh); | |
return zh !== (void 0) ? this._list.get(zh)[1] : yh; | |
}; | |
xf.prototype.clear = function() { | |
if (this.size === 0) return this; | |
if (this.__ownerID) { | |
this.size = 0; | |
this._map.clear(); | |
this._list.clear(); | |
return this; | |
} | |
return bg(); | |
}; | |
xf.prototype.set = function(xh, yh) { | |
return cg(this, xh, yh); | |
}; | |
xf.prototype.remove = function(xh) { | |
return cg(this, xh, m); | |
}; | |
xf.prototype.wasAltered = function() { | |
return this._map.wasAltered() || this._list.wasAltered(); | |
}; | |
xf.prototype.__iterate = function(xh, yh) { | |
var zh = this; | |
return this._list.__iterate(function(ai) { | |
return ai && xh(ai[1], ai[0], zh); | |
}, yh); | |
}; | |
xf.prototype.__iterator = function(xh, yh) { | |
return this._list.fromEntrySeq().__iterator(xh, yh); | |
}; | |
xf.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
var yh = this._map.__ensureOwner(xh), | |
zh = this._list.__ensureOwner(xh); | |
if (!xh) { | |
this.__ownerID = xh; | |
this._map = yh; | |
this._list = zh; | |
return this; | |
} | |
return zf(yh, zh, xh, this.__hash); | |
}; | |
function yf(xh) { | |
return zd(xh) && ia(xh); | |
} | |
xf.isOrderedMap = yf; | |
xf.prototype[ma] = true; | |
xf.prototype[i] = xf.prototype.remove; | |
function zf(xh, yh, zh, ai) { | |
var bi = Object.create(xf.prototype); | |
bi.size = xh ? xh.size : 0; | |
bi._map = xh; | |
bi._list = yh; | |
bi.__ownerID = zh; | |
bi.__hash = ai; | |
return bi; | |
} | |
var ag; | |
function bg() { | |
return ag || (ag = zf(me(), pf())); | |
} | |
function cg(xh, yh, zh) { | |
var ai = xh._map, | |
bi = xh._list, | |
ci = ai.get(yh), | |
di = ci !== (void 0), | |
ei, fi; | |
if (zh === m) { | |
if (!di) return xh; | |
if (bi.size >= k && bi.size >= ai.size * 2) { | |
fi = bi.filter(function(gi, hi) { | |
return gi !== (void 0) && ci !== hi; | |
}); | |
ei = fi.toKeyedSeq().map(function(gi) { | |
return gi[0]; | |
}).flip().toMap(); | |
if (xh.__ownerID) ei.__ownerID = fi.__ownerID = xh.__ownerID; | |
} else { | |
ei = ai.remove(yh); | |
fi = ci === bi.size - 1 ? bi.pop() : bi.set(ci, (void 0)); | |
} | |
} else if (di) { | |
if (zh === bi.get(ci)[1]) return xh; | |
ei = ai; | |
fi = bi.set(ci, [yh, zh]); | |
} else { | |
ei = ai.set(yh, bi.size); | |
fi = bi.set(bi.size, [yh, zh]); | |
} | |
if (xh.__ownerID) { | |
xh.size = ei.size; | |
xh._map = ei; | |
xh._list = fi; | |
xh.__hash = (void 0); | |
return xh; | |
} | |
return zf(ei, fi); | |
} | |
h(dg, vb); | |
function dg(xh) { | |
return xh === null || xh === (void 0) ? jg() : eg(xh) ? xh : jg().unshiftAll(xh); | |
} | |
dg.of = function() { | |
return this(arguments); | |
}; | |
dg.prototype.toString = function() { | |
return this.__toString('Stack [', ']'); | |
}; | |
dg.prototype.get = function(xh, yh) { | |
var zh = this._head; | |
xh = u(this, xh); | |
while (zh && xh--) zh = zh.next; | |
return zh ? zh.value : yh; | |
}; | |
dg.prototype.peek = function() { | |
return this._head && this._head.value; | |
}; | |
dg.prototype.push = function() { | |
if (arguments.length === 0) return this; | |
var xh = this.size + arguments.length, | |
yh = this._head; | |
for (var zh = arguments.length - 1; zh >= 0; zh--) yh = { | |
value: arguments[zh], | |
next: yh | |
}; | |
if (this.__ownerID) { | |
this.size = xh; | |
this._head = yh; | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return hg(xh, yh); | |
}; | |
dg.prototype.pushAll = function(xh) { | |
xh = ca(xh); | |
if (xh.size === 0) return this; | |
uc(xh.size); | |
var yh = this.size, | |
zh = this._head; | |
xh.reverse().forEach(function(ai) { | |
yh++; | |
zh = { | |
value: ai, | |
next: zh | |
}; | |
}); | |
if (this.__ownerID) { | |
this.size = yh; | |
this._head = zh; | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return hg(yh, zh); | |
}; | |
dg.prototype.pop = function() { | |
return this.slice(1); | |
}; | |
dg.prototype.unshift = function() { | |
return this.push.apply(this, arguments); | |
}; | |
dg.prototype.unshiftAll = function(xh) { | |
return this.pushAll(xh); | |
}; | |
dg.prototype.shift = function() { | |
return this.pop.apply(this, arguments); | |
}; | |
dg.prototype.clear = function() { | |
if (this.size === 0) return this; | |
if (this.__ownerID) { | |
this.size = 0; | |
this._head = (void 0); | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return jg(); | |
}; | |
dg.prototype.slice = function(xh, yh) { | |
if (w(xh, yh, this.size)) return this; | |
var zh = x(xh, this.size), | |
ai = y(yh, this.size); | |
if (ai !== this.size) return vb.prototype.slice.call(this, xh, yh); | |
var bi = this.size - zh, | |
ci = this._head; | |
while (zh--) ci = ci.next; | |
if (this.__ownerID) { | |
this.size = bi; | |
this._head = ci; | |
this.__hash = (void 0); | |
this.__altered = true; | |
return this; | |
} | |
return hg(bi, ci); | |
}; | |
dg.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
if (!xh) { | |
this.__ownerID = xh; | |
this.__altered = false; | |
return this; | |
} | |
return hg(this.size, this._head, xh, this.__hash); | |
}; | |
dg.prototype.__iterate = function(xh, yh) { | |
if (yh) return this.reverse().__iterate(xh); | |
var zh = 0, | |
ai = this._head; | |
while (ai) { | |
if (xh(ai.value, zh++, this) === false) break; | |
ai = ai.next; | |
} | |
return zh; | |
}; | |
dg.prototype.__iterator = function(xh, yh) { | |
if (yh) return this.reverse().__iterator(xh); | |
var zh = 0, | |
ai = this._head; | |
return new ta(function() { | |
if (ai) { | |
var bi = ai.value; | |
ai = ai.next; | |
return ua(xh, zh++, bi); | |
} | |
return va(); | |
}); | |
}; | |
function eg(xh) { | |
return !!(xh && xh[fg]); | |
} | |
dg.isStack = eg; | |
var fg = '@@__IMMUTABLE_STACK__@@', | |
gg = dg.prototype; | |
gg[fg] = true; | |
gg.withMutations = be.withMutations; | |
gg.asMutable = be.asMutable; | |
gg.asImmutable = be.asImmutable; | |
gg.wasAltered = be.wasAltered; | |
function hg(xh, yh, zh, ai) { | |
var bi = Object.create(gg); | |
bi.size = xh; | |
bi._head = yh; | |
bi.__ownerID = zh; | |
bi.__hash = ai; | |
bi.__altered = false; | |
return bi; | |
} | |
var ig; | |
function jg() { | |
return ig || (ig = hg(0)); | |
} | |
h(kg, wb); | |
function kg(xh) { | |
return xh === null || xh === (void 0) ? rg() : lg(xh) ? xh : rg().withMutations(function(yh) { | |
var zh = da(xh); | |
uc(zh.size); | |
zh.forEach(function(ai) { | |
return yh.add(ai); | |
}); | |
}); | |
} | |
kg.of = function() { | |
return this(arguments); | |
}; | |
kg.fromKeys = function(xh) { | |
return this(ba(xh).keySeq()); | |
}; | |
kg.prototype.toString = function() { | |
return this.__toString('Set {', '}'); | |
}; | |
kg.prototype.has = function(xh) { | |
return this._map.has(xh); | |
}; | |
kg.prototype.add = function(xh) { | |
return og(this, this._map.set(xh, true)); | |
}; | |
kg.prototype.remove = function(xh) { | |
return og(this, this._map.remove(xh)); | |
}; | |
kg.prototype.clear = function() { | |
return og(this, this._map.clear()); | |
}; | |
kg.prototype.union = function() { | |
var xh = g.call(arguments, 0); | |
xh = xh.filter(function(yh) { | |
return yh.size !== 0; | |
}); | |
if (xh.length === 0) return this; | |
if (this.size === 0 && !this.__ownerID && xh.length === 1) return this.constructor(xh[0]); | |
return this.withMutations(function(yh) { | |
for (var zh = 0; zh < xh.length; zh++) da(xh[zh]).forEach(function(ai) { | |
return yh.add(ai); | |
}); | |
}); | |
}; | |
kg.prototype.intersect = function() { | |
var xh = g.call(arguments, 0); | |
if (xh.length === 0) return this; | |
xh = xh.map(function(zh) { | |
return da(zh); | |
}); | |
var yh = this; | |
return this.withMutations(function(zh) { | |
yh.forEach(function(ai) { | |
if (!xh.every(function(bi) { | |
return bi.includes(ai); | |
})) zh.remove(ai); | |
}); | |
}); | |
}; | |
kg.prototype.subtract = function() { | |
var xh = g.call(arguments, 0); | |
if (xh.length === 0) return this; | |
xh = xh.map(function(zh) { | |
return da(zh); | |
}); | |
var yh = this; | |
return this.withMutations(function(zh) { | |
yh.forEach(function(ai) { | |
if (xh.some(function(bi) { | |
return bi.includes(ai); | |
})) zh.remove(ai); | |
}); | |
}); | |
}; | |
kg.prototype.merge = function() { | |
return this.union.apply(this, arguments); | |
}; | |
kg.prototype.mergeWith = function(xh) { | |
var yh = g.call(arguments, 1); | |
return this.union.apply(this, yh); | |
}; | |
kg.prototype.sort = function(xh) { | |
return sg(md(this, xh)); | |
}; | |
kg.prototype.sortBy = function(xh, yh) { | |
return sg(md(this, yh, xh)); | |
}; | |
kg.prototype.wasAltered = function() { | |
return this._map.wasAltered(); | |
}; | |
kg.prototype.__iterate = function(xh, yh) { | |
var zh = this; | |
return this._map.__iterate(function(ai, bi) { | |
return xh(bi, bi, zh); | |
}, yh); | |
}; | |
kg.prototype.__iterator = function(xh, yh) { | |
return this._map.map(function(zh, ai) { | |
return ai; | |
}).__iterator(xh, yh); | |
}; | |
kg.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
var yh = this._map.__ensureOwner(xh); | |
if (!xh) { | |
this.__ownerID = xh; | |
this._map = yh; | |
return this; | |
} | |
return this.__make(yh, xh); | |
}; | |
function lg(xh) { | |
return !!(xh && xh[mg]); | |
} | |
kg.isSet = lg; | |
var mg = '@@__IMMUTABLE_SET__@@', | |
ng = kg.prototype; | |
ng[mg] = true; | |
ng[i] = ng.remove; | |
ng.mergeDeep = ng.merge; | |
ng.mergeDeepWith = ng.mergeWith; | |
ng.withMutations = be.withMutations; | |
ng.asMutable = be.asMutable; | |
ng.asImmutable = be.asImmutable; | |
ng.__empty = rg; | |
ng.__make = pg; | |
function og(xh, yh) { | |
if (xh.__ownerID) { | |
xh.size = yh.size; | |
xh._map = yh; | |
return xh; | |
} | |
return yh === xh._map ? xh : yh.size === 0 ? xh.__empty() : xh.__make(yh); | |
} | |
function pg(xh, yh) { | |
var zh = Object.create(ng); | |
zh.size = xh ? xh.size : 0; | |
zh._map = xh; | |
zh.__ownerID = yh; | |
return zh; | |
} | |
var qg; | |
function rg() { | |
return qg || (qg = pg(me())); | |
} | |
h(sg, kg); | |
function sg(xh) { | |
return xh === null || xh === (void 0) ? xg() : tg(xh) ? xh : xg().withMutations(function(yh) { | |
var zh = da(xh); | |
uc(zh.size); | |
zh.forEach(function(ai) { | |
return yh.add(ai); | |
}); | |
}); | |
} | |
sg.of = function() { | |
return this(arguments); | |
}; | |
sg.fromKeys = function(xh) { | |
return this(ba(xh).keySeq()); | |
}; | |
sg.prototype.toString = function() { | |
return this.__toString('OrderedSet {', '}'); | |
}; | |
function tg(xh) { | |
return lg(xh) && ia(xh); | |
} | |
sg.isOrderedSet = tg; | |
var ug = sg.prototype; | |
ug[ma] = true; | |
ug.__empty = xg; | |
ug.__make = vg; | |
function vg(xh, yh) { | |
var zh = Object.create(ug); | |
zh.size = xh ? xh.size : 0; | |
zh._map = xh; | |
zh.__ownerID = yh; | |
return zh; | |
} | |
var wg; | |
function xg() { | |
return wg || (wg = vg(bg())); | |
} | |
h(yg, ub); | |
function yg(xh, yh) { | |
var zh, ai = function ci(di) { | |
if (di instanceof ai) return di; | |
if (!(this instanceof ai)) return new ai(di); | |
if (!zh) { | |
zh = true; | |
var ei = Object.keys(xh); | |
ch(bi, ei); | |
bi.size = ei.length; | |
bi._name = yh; | |
bi._keys = ei; | |
bi._defaultValues = xh; | |
} | |
this._map = yd(di); | |
}, | |
bi = ai.prototype = Object.create(zg); | |
bi.constructor = ai; | |
return ai; | |
} | |
yg.prototype.toString = function() { | |
return this.__toString(bh(this) + ' {', '}'); | |
}; | |
yg.prototype.has = function(xh) { | |
return this._defaultValues.hasOwnProperty(xh); | |
}; | |
yg.prototype.get = function(xh, yh) { | |
if (!this.has(xh)) return yh; | |
var zh = this._defaultValues[xh]; | |
return this._map ? this._map.get(xh, zh) : zh; | |
}; | |
yg.prototype.clear = function() { | |
if (this.__ownerID) { | |
this._map && this._map.clear(); | |
return this; | |
} | |
var xh = this.constructor; | |
return xh._empty || (xh._empty = ah(this, me())); | |
}; | |
yg.prototype.set = function(xh, yh) { | |
if (!this.has(xh)) throw new Error('Cannot set unknown key "' + xh + '" on ' + bh(this)); | |
var zh = this._map && this._map.set(xh, yh); | |
if (this.__ownerID || zh === this._map) return this; | |
return ah(this, zh); | |
}; | |
yg.prototype.remove = function(xh) { | |
if (!this.has(xh)) return this; | |
var yh = this._map && this._map.remove(xh); | |
if (this.__ownerID || yh === this._map) return this; | |
return ah(this, yh); | |
}; | |
yg.prototype.wasAltered = function() { | |
return this._map.wasAltered(); | |
}; | |
yg.prototype.__iterator = function(xh, yh) { | |
var zh = this; | |
return ba(this._defaultValues).map(function(ai, bi) { | |
return zh.get(bi); | |
}).__iterator(xh, yh); | |
}; | |
yg.prototype.__iterate = function(xh, yh) { | |
var zh = this; | |
return ba(this._defaultValues).map(function(ai, bi) { | |
return zh.get(bi); | |
}).__iterate(xh, yh); | |
}; | |
yg.prototype.__ensureOwner = function(xh) { | |
if (xh === this.__ownerID) return this; | |
var yh = this._map && this._map.__ensureOwner(xh); | |
if (!xh) { | |
this.__ownerID = xh; | |
this._map = yh; | |
return this; | |
} | |
return ah(this, yh, xh); | |
}; | |
var zg = yg.prototype; | |
zg[i] = zg.remove; | |
zg.deleteIn = zg.removeIn = be.removeIn; | |
zg.merge = be.merge; | |
zg.mergeWith = be.mergeWith; | |
zg.mergeIn = be.mergeIn; | |
zg.mergeDeep = be.mergeDeep; | |
zg.mergeDeepWith = be.mergeDeepWith; | |
zg.mergeDeepIn = be.mergeDeepIn; | |
zg.setIn = be.setIn; | |
zg.update = be.update; | |
zg.updateIn = be.updateIn; | |
zg.withMutations = be.withMutations; | |
zg.asMutable = be.asMutable; | |
zg.asImmutable = be.asImmutable; | |
function ah(xh, yh, zh) { | |
var ai = Object.create(Object.getPrototypeOf(xh)); | |
ai._map = yh; | |
ai.__ownerID = zh; | |
return ai; | |
} | |
function bh(xh) { | |
return xh._name || xh.constructor.name || 'Record'; | |
} | |
function ch(xh, yh) { | |
try { | |
yh.forEach(dh.bind((void 0), xh)); | |
} catch (zh) {} | |
} | |
function dh(xh, yh) { | |
Object.defineProperty(xh, yh, { | |
get: function() { | |
return this.get(yh); | |
}, | |
set: function(zh) { | |
tc(this.__ownerID); | |
this.set(yh, zh); | |
} | |
}); | |
} | |
function eh(xh, yh) { | |
if (xh === yh) return true; | |
if (!ea(yh) || xh.size !== (void 0) && yh.size !== (void 0) && xh.size !== yh.size || xh.__hash !== (void 0) && yh.__hash !== (void 0) && xh.__hash !== yh.__hash || fa(xh) !== fa(yh) || ga(xh) !== ga(yh) || ia(xh) !== ia(yh)) return false; | |
if (xh.size === 0 && yh.size === 0) return true; | |
var zh = !ha(xh); | |
if (ia(xh)) { | |
var ai = xh.entries(); | |
return yh.every(function(fi, gi) { | |
var hi = ai.next().value; | |
return hi && xb(hi[1], fi) && (zh || xb(hi[0], gi)); | |
}) && ai.next().done; | |
} | |
var bi = false; | |
if (xh.size === (void 0)) | |
if (yh.size === (void 0)) { | |
if (typeof xh.cacheResult === 'function') xh.cacheResult(); | |
} else { | |
bi = true; | |
var ci = xh; | |
xh = yh; | |
yh = ci; | |
} | |
var di = true, | |
ei = yh.__iterate(function(fi, gi) { | |
if (zh ? !xh.has(fi) : bi ? !xb(fi, xh.get(gi, m)) : !xb(xh.get(gi, m), fi)) { | |
di = false; | |
return false; | |
} | |
}); | |
return di && xh.size === ei; | |
} | |
h(fh, db); | |
function fh(xh, yh, zh) { | |
if (!(this instanceof fh)) return new fh(xh, yh, zh); | |
tc(zh !== 0); | |
xh = xh || 0; | |
if (yh === (void 0)) yh = Infinity; | |
zh = zh === (void 0) ? 1 : Math.abs(zh); | |
if (yh < xh) zh = -zh; | |
this._start = xh; | |
this._end = yh; | |
this._step = zh; | |
this.size = Math.max(0, Math.ceil((yh - xh) / zh - 1) + 1); | |
if (this.size === 0) { | |
if (gh) return gh; | |
gh = this; | |
} | |
} | |
fh.prototype.toString = function() { | |
if (this.size === 0) return 'Range []'; | |
return 'Range [ ' + this._start + '...' + this._end + (this._step > 1 ? ' by ' + this._step : '') + ' ]'; | |
}; | |
fh.prototype.get = function(xh, yh) { | |
return this.has(xh) ? this._start + u(this, xh) * this._step : yh; | |
}; | |
fh.prototype.includes = function(xh) { | |
var yh = (xh - this._start) / this._step; | |
return yh >= 0 && yh < this.size && yh === Math.floor(yh); | |
}; | |
fh.prototype.slice = function(xh, yh) { | |
if (w(xh, yh, this.size)) return this; | |
xh = x(xh, this.size); | |
yh = y(yh, this.size); | |
if (yh <= xh) return new fh(0, 0); | |
return new fh(this.get(xh, this._end), this.get(yh, this._end), this._step); | |
}; | |
fh.prototype.indexOf = function(xh) { | |
var yh = xh - this._start; | |
if (yh % this._step === 0) { | |
var zh = yh / this._step; | |
if (zh >= 0 && zh < this.size) return zh; | |
} | |
return -1; | |
}; | |
fh.prototype.lastIndexOf = function(xh) { | |
return this.indexOf(xh); | |
}; | |
fh.prototype.__iterate = function(xh, yh) { | |
var zh = this.size - 1, | |
ai = this._step, | |
bi = yh ? this._start + zh * ai : this._start; | |
for (var ci = 0; ci <= zh; ci++) { | |
if (xh(bi, ci, this) === false) return ci + 1; | |
bi += yh ? -ai : ai; | |
} | |
return ci; | |
}; | |
fh.prototype.__iterator = function(xh, yh) { | |
var zh = this.size - 1, | |
ai = this._step, | |
bi = yh ? this._start + zh * ai : this._start, | |
ci = 0; | |
return new ta(function() { | |
var di = bi; | |
bi += yh ? -ai : ai; | |
return ci > zh ? va() : ua(xh, ci++, di); | |
}); | |
}; | |
fh.prototype.equals = function(xh) { | |
return xh instanceof fh ? this._start === xh._start && this._end === xh._end && this._step === xh._step : eh(this, xh); | |
}; | |
var gh; | |
h(hh, db); | |
function hh(xh, yh) { | |
if (!(this instanceof hh)) return new hh(xh, yh); | |
this._value = xh; | |
this.size = yh === (void 0) ? Infinity : Math.max(0, yh); | |
if (this.size === 0) { | |
if (ih) return ih; | |
ih = this; | |
} | |
} | |
hh.prototype.toString = function() { | |
if (this.size === 0) return 'Repeat []'; | |
return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]'; | |
}; | |
hh.prototype.get = function(xh, yh) { | |
return this.has(xh) ? this._value : yh; | |
}; | |
hh.prototype.includes = function(xh) { | |
return xb(this._value, xh); | |
}; | |
hh.prototype.slice = function(xh, yh) { | |
var zh = this.size; | |
return w(xh, yh, zh) ? this : new hh(this._value, y(yh, zh) - x(xh, zh)); | |
}; | |
hh.prototype.reverse = function() { | |
return this; | |
}; | |
hh.prototype.indexOf = function(xh) { | |
if (xb(this._value, xh)) return 0; | |
return -1; | |
}; | |
hh.prototype.lastIndexOf = function(xh) { | |
if (xb(this._value, xh)) return this.size; | |
return -1; | |
}; | |
hh.prototype.__iterate = function(xh, yh) { | |
for (var zh = 0; zh < this.size; zh++) | |
if (xh(this._value, zh, this) === false) return zh + 1; | |
return zh; | |
}; | |
hh.prototype.__iterator = function(xh, yh) { | |
var zh = this, | |
ai = 0; | |
return new ta(function() { | |
return ai < zh.size ? ua(xh, ai++, zh._value) : va(); | |
}); | |
}; | |
hh.prototype.equals = function(xh) { | |
return xh instanceof hh ? xb(this._value, xh._value) : eh(xh); | |
}; | |
var ih; | |
function jh(xh, yh) { | |
var zh = function(ai) { | |
xh.prototype[ai] = yh[ai]; | |
}; | |
Object.keys(yh).forEach(zh); | |
Object.getOwnPropertySymbols && Object.getOwnPropertySymbols(yh).forEach(zh); | |
return xh; | |
} | |
aa.Iterator = ta; | |
jh(aa, { | |
toArray: function() { | |
uc(this.size); | |
var xh = new Array(this.size || 0); | |
this.valueSeq().__iterate(function(yh, zh) { | |
xh[zh] = yh; | |
}); | |
return xh; | |
}, | |
toIndexedSeq: function() { | |
return new wc(this); | |
}, | |
toJS: function() { | |
return this.toSeq().map(function(xh) { | |
return xh && typeof xh.toJS === 'function' ? xh.toJS() : xh; | |
}).__toJS(); | |
}, | |
toJSON: function() { | |
return this.toSeq().map(function(xh) { | |
return xh && typeof xh.toJSON === 'function' ? xh.toJSON() : xh; | |
}).__toJS(); | |
}, | |
toKeyedSeq: function() { | |
return new vc(this, true); | |
}, | |
toMap: function() { | |
return yd(this.toKeyedSeq()); | |
}, | |
toObject: function() { | |
uc(this.size); | |
var xh = {}; | |
this.__iterate(function(yh, zh) { | |
xh[zh] = yh; | |
}); | |
return xh; | |
}, | |
toOrderedMap: function() { | |
return xf(this.toKeyedSeq()); | |
}, | |
toOrderedSet: function() { | |
return sg(fa(this) ? this.valueSeq() : this); | |
}, | |
toSet: function() { | |
return kg(fa(this) ? this.valueSeq() : this); | |
}, | |
toSetSeq: function() { | |
return new xc(this); | |
}, | |
toSeq: function() { | |
return ga(this) ? this.toIndexedSeq() : fa(this) ? this.toKeyedSeq() : this.toSetSeq(); | |
}, | |
toStack: function() { | |
return dg(fa(this) ? this.valueSeq() : this); | |
}, | |
toList: function() { | |
return ff(fa(this) ? this.valueSeq() : this); | |
}, | |
toString: function() { | |
return '[Iterable]'; | |
}, | |
__toString: function(xh, yh) { | |
if (this.size === 0) return xh + yh; | |
return xh + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + yh; | |
}, | |
concat: function() { | |
var xh = g.call(arguments, 0); | |
return qd(this, id(this, xh)); | |
}, | |
contains: function(xh) { | |
return this.includes(xh); | |
}, | |
includes: function(xh) { | |
return this.some(function(yh) { | |
return xb(yh, xh); | |
}); | |
}, | |
entries: function() { | |
return this.__iterator(pa); | |
}, | |
every: function(xh, yh) { | |
uc(this.size); | |
var zh = true; | |
this.__iterate(function(ai, bi, ci) { | |
if (!xh.call(yh, ai, bi, ci)) { | |
zh = false; | |
return false; | |
} | |
}); | |
return zh; | |
}, | |
filter: function(xh, yh) { | |
return qd(this, cd(this, xh, yh, true)); | |
}, | |
find: function(xh, yh, zh) { | |
var ai = this.findEntry(xh, yh); | |
return ai ? ai[1] : zh; | |
}, | |
findEntry: function(xh, yh) { | |
var zh; | |
this.__iterate(function(ai, bi, ci) { | |
if (xh.call(yh, ai, bi, ci)) { | |
zh = [bi, ai]; | |
return false; | |
} | |
}); | |
return zh; | |
}, | |
findLastEntry: function(xh, yh) { | |
return this.toSeq().reverse().findEntry(xh, yh); | |
}, | |
forEach: function(xh, yh) { | |
uc(this.size); | |
return this.__iterate(yh ? xh.bind(yh) : xh); | |
}, | |
join: function(xh) { | |
uc(this.size); | |
xh = xh !== (void 0) ? '' + xh : ','; | |
var yh = '', | |
zh = true; | |
this.__iterate(function(ai) { | |
zh ? (zh = false) : (yh += xh); | |
yh += ai !== null && ai !== (void 0) ? ai.toString() : ''; | |
}); | |
return yh; | |
}, | |
keys: function() { | |
return this.__iterator(na); | |
}, | |
map: function(xh, yh) { | |
return qd(this, ad(this, xh, yh)); | |
}, | |
reduce: function(xh, yh, zh) { | |
uc(this.size); | |
var ai, bi; | |
if (arguments.length < 2) { | |
bi = true; | |
} else ai = yh; | |
this.__iterate(function(ci, di, ei) { | |
if (bi) { | |
bi = false; | |
ai = ci; | |
} else ai = xh.call(zh, ai, ci, di, ei); | |
}); | |
return ai; | |
}, | |
reduceRight: function(xh, yh, zh) { | |
var ai = this.toKeyedSeq().reverse(); | |
return ai.reduce.apply(ai, arguments); | |
}, | |
reverse: function() { | |
return qd(this, bd(this, true)); | |
}, | |
slice: function(xh, yh) { | |
return qd(this, fd(this, xh, yh, true)); | |
}, | |
some: function(xh, yh) { | |
return !this.every(oh(xh), yh); | |
}, | |
sort: function(xh) { | |
return qd(this, md(this, xh)); | |
}, | |
values: function() { | |
return this.__iterator(oa); | |
}, | |
butLast: function() { | |
return this.slice(0, -1); | |
}, | |
isEmpty: function() { | |
return this.size !== (void 0) ? this.size === 0 : !this.some(function() { | |
return true; | |
}); | |
}, | |
count: function(xh, yh) { | |
return t(xh ? this.toSeq().filter(xh, yh) : this); | |
}, | |
countBy: function(xh, yh) { | |
return dd(this, xh, yh); | |
}, | |
equals: function(xh) { | |
return eh(this, xh); | |
}, | |
entrySeq: function() { | |
var xh = this; | |
if (xh._cache) return new gb(xh._cache); | |
var yh = xh.toSeq().map(nh).toIndexedSeq(); | |
yh.fromEntrySeq = function() { | |
return xh.toSeq(); | |
}; | |
return yh; | |
}, | |
filterNot: function(xh, yh) { | |
return this.filter(oh(xh), yh); | |
}, | |
findLast: function(xh, yh, zh) { | |
return this.toKeyedSeq().reverse().find(xh, yh, zh); | |
}, | |
first: function() { | |
return this.find(v); | |
}, | |
flatMap: function(xh, yh) { | |
return qd(this, kd(this, xh, yh)); | |
}, | |
flatten: function(xh) { | |
return qd(this, jd(this, xh, true)); | |
}, | |
fromEntrySeq: function() { | |
return new yc(this); | |
}, | |
get: function(xh, yh) { | |
return this.find(function(zh, ai) { | |
return xb(ai, xh); | |
}, (void 0), yh); | |
}, | |
getIn: function(xh, yh) { | |
var zh = this, | |
ai = xd(xh), | |
bi; | |
while (!(bi = ai.next()).done) { | |
var ci = bi.value; | |
zh = zh && zh.get ? zh.get(ci, m) : m; | |
if (zh === m) return yh; | |
} | |
return zh; | |
}, | |
groupBy: function(xh, yh) { | |
return ed(this, xh, yh); | |
}, | |
has: function(xh) { | |
return this.get(xh, m) !== m; | |
}, | |
hasIn: function(xh) { | |
return this.getIn(xh, m) !== m; | |
}, | |
isSubset: function(xh) { | |
xh = typeof xh.includes === 'function' ? xh : aa(xh); | |
return this.every(function(yh) { | |
return xh.includes(yh); | |
}); | |
}, | |
isSuperset: function(xh) { | |
return xh.isSubset(this); | |
}, | |
keySeq: function() { | |
return this.toSeq().map(mh).toIndexedSeq(); | |
}, | |
last: function() { | |
return this.toSeq().reverse().first(); | |
}, | |
max: function(xh) { | |
return nd(this, xh); | |
}, | |
maxBy: function(xh, yh) { | |
return nd(this, yh, xh); | |
}, | |
min: function(xh) { | |
return nd(this, xh ? ph(xh) : sh); | |
}, | |
minBy: function(xh, yh) { | |
return nd(this, yh ? ph(yh) : sh, xh); | |
}, | |
rest: function() { | |
return this.slice(1); | |
}, | |
skip: function(xh) { | |
return this.slice(Math.max(0, xh)); | |
}, | |
skipLast: function(xh) { | |
return qd(this, this.toSeq().reverse().skip(xh).reverse()); | |
}, | |
skipWhile: function(xh, yh) { | |
return qd(this, hd(this, xh, yh, true)); | |
}, | |
skipUntil: function(xh, yh) { | |
return this.skipWhile(oh(xh), yh); | |
}, | |
sortBy: function(xh, yh) { | |
return qd(this, md(this, yh, xh)); | |
}, | |
take: function(xh) { | |
return this.slice(0, Math.max(0, xh)); | |
}, | |
takeLast: function(xh) { | |
return qd(this, this.toSeq().reverse().take(xh).reverse()); | |
}, | |
takeWhile: function(xh, yh) { | |
return qd(this, gd(this, xh, yh)); | |
}, | |
takeUntil: function(xh, yh) { | |
return this.takeWhile(oh(xh), yh); | |
}, | |
valueSeq: function() { | |
return this.toIndexedSeq(); | |
}, | |
hashCode: function() { | |
return this.__hash || (this.__hash = th(this)); | |
} | |
}); | |
var kh = aa.prototype; | |
kh[ja] = true; | |
kh[sa] = kh.values; | |
kh.__toJS = kh.toArray; | |
kh.__toStringMapper = qh; | |
kh.inspect = kh.toSource = function() { | |
return this.toString(); | |
}; | |
kh.chain = kh.flatMap; | |
(function() { | |
try { | |
Object.defineProperty(kh, 'length', { | |
get: function() { | |
if (!aa.noLengthWarning) { | |
var yh; | |
try { | |
throw new Error(); | |
} catch (zh) { | |
yh = zh.stack; | |
} | |
if (yh.indexOf('_wrapObject') === -1) { | |
console && emptyFunction && false; | |
return this.size; | |
} | |
} | |
} | |
}); | |
} catch (xh) {} | |
})(); | |
jh(ba, { | |
flip: function() { | |
return qd(this, zc(this)); | |
}, | |
findKey: function(xh, yh) { | |
var zh = this.findEntry(xh, yh); | |
return zh && zh[0]; | |
}, | |
findLastKey: function(xh, yh) { | |
return this.toSeq().reverse().findKey(xh, yh); | |
}, | |
keyOf: function(xh) { | |
return this.findKey(function(yh) { | |
return xb(yh, xh); | |
}); | |
}, | |
lastKeyOf: function(xh) { | |
return this.findLastKey(function(yh) { | |
return xb(yh, xh); | |
}); | |
}, | |
mapEntries: function(xh, yh) { | |
var zh = this, | |
ai = 0; | |
return qd(this, this.toSeq().map(function(bi, ci) { | |
return xh.call(yh, [ci, bi], ai++, zh); | |
}).fromEntrySeq()); | |
}, | |
mapKeys: function(xh, yh) { | |
var zh = this; | |
return qd(this, this.toSeq().flip().map(function(ai, bi) { | |
return xh.call(yh, ai, bi, zh); | |
}).flip()); | |
} | |
}); | |
var lh = ba.prototype; | |
lh[ka] = true; | |
lh[sa] = kh.entries; | |
lh.__toJS = kh.toObject; | |
lh.__toStringMapper = function(xh, yh) { | |
return JSON.stringify(yh) + ': ' + qh(xh); | |
}; | |
jh(ca, { | |
toKeyedSeq: function() { | |
return new vc(this, false); | |
}, | |
filter: function(xh, yh) { | |
return qd(this, cd(this, xh, yh, false)); | |
}, | |
findIndex: function(xh, yh) { | |
var zh = this.findEntry(xh, yh); | |
return zh ? zh[0] : -1; | |
}, | |
indexOf: function(xh) { | |
var yh = this.toKeyedSeq().keyOf(xh); | |
return yh === (void 0) ? -1 : yh; | |
}, | |
lastIndexOf: function(xh) { | |
return this.toSeq().reverse().indexOf(xh); | |
}, | |
reverse: function() { | |
return qd(this, bd(this, false)); | |
}, | |
slice: function(xh, yh) { | |
return qd(this, fd(this, xh, yh, false)); | |
}, | |
splice: function(xh, yh) { | |
var zh = arguments.length; | |
yh = Math.max(yh | 0, 0); | |
if (zh === 0 || (zh === 2 && !yh)) return this; | |
xh = x(xh, this.size); | |
var ai = this.slice(0, xh); | |
return qd(this, zh === 1 ? ai : ai.concat(s(arguments, 2), this.slice(xh + yh))); | |
}, | |
findLastIndex: function(xh, yh) { | |
var zh = this.toKeyedSeq().findLastKey(xh, yh); | |
return zh === (void 0) ? -1 : zh; | |
}, | |
first: function() { | |
return this.get(0); | |
}, | |
flatten: function(xh) { | |
return qd(this, jd(this, xh, false)); | |
}, | |
get: function(xh, yh) { | |
xh = u(this, xh); | |
return (xh < 0 || (this.size === Infinity || (this.size !== (void 0) && xh > this.size))) ? yh : this.find(function(zh, ai) { | |
return ai === xh; | |
}, (void 0), yh); | |
}, | |
has: function(xh) { | |
xh = u(this, xh); | |
return xh >= 0 && (this.size !== (void 0) ? this.size === Infinity || xh < this.size : this.indexOf(xh) !== -1); | |
}, | |
interpose: function(xh) { | |
return qd(this, ld(this, xh)); | |
}, | |
interleave: function() { | |
var xh = [this].concat(s(arguments)), | |
yh = pd(this.toSeq(), db.of, xh), | |
zh = yh.flatten(true); | |
if (yh.size) zh.size = yh.size * xh.length; | |
return qd(this, zh); | |
}, | |
last: function() { | |
return this.get(-1); | |
}, | |
skipWhile: function(xh, yh) { | |
return qd(this, hd(this, xh, yh, false)); | |
}, | |
zip: function() { | |
var xh = [this].concat(s(arguments)); | |
return qd(this, pd(this, rh, xh)); | |
}, | |
zipWith: function(xh) { | |
var yh = s(arguments); | |
yh[0] = this; | |
return qd(this, pd(this, xh, yh)); | |
} | |
}); | |
ca.prototype[la] = true; | |
ca.prototype[ma] = true; | |
jh(da, { | |
get: function(xh, yh) { | |
return this.has(xh) ? xh : yh; | |
}, | |
includes: function(xh) { | |
return this.has(xh); | |
}, | |
keySeq: function() { | |
return this.valueSeq(); | |
} | |
}); | |
da.prototype.has = kh.includes; | |
jh(cb, ba.prototype); | |
jh(db, ca.prototype); | |
jh(eb, da.prototype); | |
jh(ub, ba.prototype); | |
jh(vb, ca.prototype); | |
jh(wb, da.prototype); | |
function mh(xh, yh) { | |
return yh; | |
} | |
function nh(xh, yh) { | |
return [yh, xh]; | |
} | |
function oh(xh) { | |
return function() { | |
return !xh.apply(this, arguments); | |
}; | |
} | |
function ph(xh) { | |
return function() { | |
return -xh.apply(this, arguments); | |
}; | |
} | |
function qh(xh) { | |
return typeof xh === 'string' ? JSON.stringify(xh) : xh; | |
} | |
function rh() { | |
return s(arguments); | |
} | |
function sh(xh, yh) { | |
return xh < yh ? 1 : xh > yh ? -1 : 0; | |
} | |
function th(xh) { | |
if (xh.size === Infinity) return 0; | |
var yh = ia(xh), | |
zh = fa(xh), | |
ai = yh ? 1 : 0, | |
bi = xh.__iterate(zh ? yh ? function(ci, di) { | |
ai = 31 * ai + vh(ec(ci), ec(di)) | 0; | |
} : function(ci, di) { | |
ai = ai + vh(ec(ci), ec(di)) | 0; | |
} : yh ? function(ci) { | |
ai = 31 * ai + ec(ci) | 0; | |
} : function(ci) { | |
ai = ai + ec(ci) | 0; | |
}); | |
return uh(bi, ai); | |
} | |
function uh(xh, yh) { | |
yh = cc(yh, 3432918353); | |
yh = cc(yh << 15 | yh >>> -15, 461845907); | |
yh = cc(yh << 13 | yh >>> -13, 5); | |
yh = (yh + 3864292196 | 0) ^ xh; | |
yh = cc(yh ^ yh >>> 16, 2246822507); | |
yh = cc(yh ^ yh >>> 13, 3266489909); | |
yh = dc(yh ^ yh >>> 16); | |
return yh; | |
} | |
function vh(xh, yh) { | |
return xh ^ yh + 2654435769 + (xh << 6) + (xh >> 2) | 0; | |
} | |
var wh = { | |
Iterable: aa, | |
Seq: bb, | |
Collection: tb, | |
Map: yd, | |
OrderedMap: xf, | |
List: ff, | |
Stack: dg, | |
Set: kg, | |
OrderedSet: sg, | |
Record: yg, | |
Range: fh, | |
Repeat: hh, | |
is: xb, | |
fromJS: yb | |
}; | |
return wh; | |
})); | |
}, null); | |
__d("mergeDeepInto", ["invariant", "mergeHelpers"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = h.ArrayStrategies, | |
j = h.checkArrayStrategy, | |
k = h.checkMergeArrayArgs, | |
l = h.checkMergeLevel, | |
m = h.checkMergeObjectArgs, | |
n = h.isTerminal, | |
o = h.normalizeMergeArg, | |
p = function(t, u, v, w) { | |
m(t, u); | |
l(w); | |
var x = u ? Object.keys(u) : []; | |
for (var y = 0; y < x.length; y++) { | |
var z = x[y]; | |
r(t, u, z, v, w); | |
} | |
}, | |
q = function(t, u, v, w) { | |
k(t, u); | |
l(w); | |
var x = Math.max(t.length, u.length); | |
for (var y = 0; y < x; y++) r(t, u, y, v, w); | |
}, | |
r = function(t, u, v, w, x) { | |
var y = u[v], | |
z = u.hasOwnProperty(v), | |
aa = z && n(y), | |
ba = z && Array.isArray(y), | |
ca = z && !ba && !ba, | |
da = t[v], | |
ea = t.hasOwnProperty(v), | |
fa = ea && n(da), | |
ga = ea && Array.isArray(da), | |
ha = ea && !ga && !ga; | |
if (fa) { | |
if (aa) { | |
t[v] = y; | |
} else if (ba) { | |
t[v] = []; | |
q(t[v], y, w, x + 1); | |
} else if (ca) { | |
t[v] = {}; | |
p(t[v], y, w, x + 1); | |
} else if (!z) t[v] = da; | |
} else if (ga) { | |
if (aa) { | |
t[v] = y; | |
} else if (ba) { | |
g(i[w]); | |
if (w === i.Clobber) da.length = 0; | |
q(da, y, w, x + 1); | |
} else if (ca) { | |
t[v] = {}; | |
p(t[v], y, w, x + 1); | |
} else !z; | |
} else if (ha) { | |
if (aa) { | |
t[v] = y; | |
} else if (ba) { | |
t[v] = []; | |
q(t[v], y, w, x + 1); | |
} else if (ca) { | |
p(da, y, w, x + 1); | |
} else !z; | |
} else if (!ea) | |
if (aa) { | |
t[v] = y; | |
} else if (ba) { | |
t[v] = []; | |
q(t[v], y, w, x + 1); | |
} else if (ca) { | |
t[v] = {}; | |
p(t[v], y, w, x + 1); | |
} else !z; | |
}, | |
s = function(t, u, v) { | |
var w = o(u); | |
j(v); | |
p(t, w, v, 0); | |
}; | |
e.exports = s; | |
}, null); |
/*!CK:685237340!*/ /*1432609985,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["f8a07"]); | |
} | |
__d("XPubcontentInlinePhotoPivotsEventsController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/pubcontent\/inline_photo_pivots_chaining\/events\/", {}); | |
}, null); | |
__d("EntstreamAttachmentRelatedShare", ["Arbiter", "AsyncRequest", "AttachmentRelatedShareConstants", "csx", "cx", "CSS", "DOM", "Event", "ge", "tidyEvent", "XPubcontentInlinePhotoPivotsEventsController"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
var r = 2, | |
s = 3, | |
t = { | |
loadRelatedAttachment: function(u, v, w) { | |
var x = null; | |
if (typeof u === "string") { | |
x = o(u); | |
} else x = u; | |
if (!x) return; | |
var y = n.listen(x, 'click', function() { | |
y.remove(); | |
g.inform(i.ARTICLE_CLICK, { | |
attachment: x, | |
global_share_id: v, | |
is_right_click: false, | |
share_id: w | |
}); | |
}), | |
z = n.listen(x, 'mousedown', function(event) { | |
if (event.which === s || event.button === r) { | |
z.remove(); | |
g.inform(i.ARTICLE_CLICK, { | |
attachment: x, | |
global_share_id: v, | |
is_right_click: true | |
}); | |
} | |
}); | |
}, | |
loadInlineStoryPivotAttachment: function(u, v) { | |
var w = o(u); | |
if (!w) return; | |
var x = n.listen(w, 'click', function() { | |
x.remove(); | |
g.inform(i.PHOTO_CLICK, { | |
attachment: w, | |
storyid: v | |
}); | |
}); | |
}, | |
loadRelatedGameAttachment: function(u, v) { | |
var w = null; | |
if (typeof u === "string") { | |
w = o(u); | |
} else w = u; | |
if (!w) return; | |
p(n.listen(w, 'click', function() { | |
g.inform(i.GAME_CLICK, { | |
attachment: w, | |
global_share_id: v | |
}); | |
})); | |
p(n.listen(w, 'mousedown', function(event) { | |
if (event.which === s || event.button === r) g.inform(i.GAME_CLICK, { | |
attachment: w, | |
global_share_id: v | |
}); | |
})); | |
}, | |
loadRelatedLSCVideoAttachment: function(u, v) { | |
var w = null; | |
if (typeof u === 'string') { | |
w = o(u); | |
} else w = u; | |
if (!w) return; | |
var x = "^div._4-u2", | |
y = m.scry(w, x), | |
z = n.listen(w, 'click', function() { | |
z.remove(); | |
g.inform(i.VIDEO_CLICK, { | |
attachment: w, | |
global_share_id: v | |
}); | |
}); | |
}, | |
loadRelatedLSCInlineVideoAttachment: function(u, v) { | |
var w = null; | |
if (typeof u === 'string') { | |
w = o(u); | |
} else w = u; | |
if (!w) return; | |
n.listen(w, 'click', function() { | |
var x = "^div._4-u2", | |
y = "_1d8v", | |
z = m.scry(w, x), | |
aa = z.length === 1 ? z[0] : null, | |
ba = aa.parentNode, | |
ca = ba.previousSibling; | |
while (!ca) { | |
ba = ba.parentNode; | |
ca = ba.previousSibling; | |
} | |
if (!l.hasClass(ca, y)) { | |
var da = m.create('div', { | |
className: y | |
}), | |
ea = m.insertBefore(aa.parentNode, da), | |
fa = ea.length >= 1 ? ea[0] : null; | |
} else fa = ca; | |
var ga = m.getID(fa); | |
new h().setURI('/ajax/flash/expand_inline.php').setData({ | |
share_id: v, | |
target_div: ga, | |
max_width: 470, | |
max_height: 264, | |
replace_target_div: true | |
}).setMethod('GET').setReadOnly(true).setRelativeTo(w.parentNode).send(); | |
}); | |
}, | |
loadRelatedEventsPivotAttachment: function(u, v) { | |
var w = null; | |
if (typeof u === "string") { | |
w = o(u); | |
} else w = u; | |
if (!w) return; | |
p(n.listen(w, 'click', function() { | |
g.inform(i.EVENT_JOIN, { | |
attachment: w, | |
event_id: v | |
}); | |
})); | |
}, | |
closeButton: function(u, v) { | |
n.listen(u, 'click', function() { | |
m.remove(v); | |
}); | |
}, | |
closeButtonPhotoPivots: function(u, v, w, x) { | |
n.listen(u, 'click', function() { | |
var y = q.getURIBuilder(), | |
z = { | |
story_id: w, | |
search_query_type: x, | |
event: 'hide' | |
}; | |
new h().setMethod('POST').setURI(y.getURI()).setData(z).send(); | |
m.remove(v); | |
}); | |
}, | |
seeAllLinkPhotoPivots: function(u, v, w) { | |
n.listen(u, 'click', function() { | |
var x = q.getURIBuilder(), | |
y = { | |
story_id: v, | |
search_query_type: w, | |
event: 'see_all' | |
}; | |
new h().setMethod('POST').setURI(x.getURI()).setData(y).send(); | |
}); | |
}, | |
removeOldSuggestions: function(u) { | |
var v = o(u); | |
if (!v) return; | |
var w = m.scry(v.parentNode, "._5d73"); | |
for (var x = 1; x < w.length; x++) m.remove(w[x]); | |
setTimeout(function() { | |
l.show(w[0]); | |
}, 1000); | |
}, | |
showHiddenSuggestions: function(u) { | |
var v = n.listen(u, 'click', function() { | |
v.remove(); | |
var w = "^._1ui8", | |
x = m.scry(u, w); | |
if (!x) return; | |
l.hide(x[0]); | |
var y = x[0].previousSibling; | |
while (y) { | |
l.show(y); | |
y = y.previousSibling; | |
} | |
}); | |
} | |
}; | |
e.exports = t; | |
}, null); |
/*!CK:264620257!*/ /*1437417673,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["xMTrg"]); | |
} | |
__d("ScrollColumn.react", ["cx", "invariant", "throttle", "tidyEvent", "Arbiter", "Event", "React", "Vector", "ViewportBounds"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) { | |
b.__markCompiled && b.__markCompiled(); | |
var p = m, | |
q = p.PropTypes, | |
r = 'ScrollColumn/adjust', | |
s = m.createClass({ | |
displayName: "ScrollColumn", | |
propTypes: { | |
topOffset: q.number, | |
zIndex: q.number | |
}, | |
getDefaultProps: function() { | |
return { | |
topOffset: 0, | |
zIndex: 0 | |
}; | |
}, | |
_scroll: 0, | |
_scrollDelta: 0, | |
getInitialState: function() { | |
return { | |
fixed: null, | |
fixedBottom: 0, | |
fixedTop: this.props.topOffset, | |
top: 0 | |
}; | |
}, | |
render: function() { | |
var t = 'auto', | |
u = this.state.fixedLeft, | |
v = 'auto'; | |
if (this.state.fixed === 'bottom') { | |
t = this.state.fixedBottom; | |
} else if (this.state.fixed === 'top') { | |
v = this.state.fixedTop; | |
} else { | |
u = 'auto'; | |
v = this.state.top; | |
} | |
return (m.createElement("div", { | |
className: "_5ss7", | |
ref: "container" | |
}, m.createElement("div", { | |
className: (("_5ss8") + (this.state.fixed ? ' ' + "fixed_always" : '')), | |
ref: "column", | |
style: { | |
bottom: t, | |
left: u, | |
top: v, | |
zIndex: this.props.zIndex | |
} | |
}, this.props.children))); | |
}, | |
componentDidMount: function() { | |
this.setState({ | |
adjustEventListener: j(k.subscribe(r, function() { | |
this._adjust(); | |
}.bind(this))), | |
resizeListener: j(l.listen(window, 'resize', i(this._adjust))), | |
scrollListener: j(l.listen(window, 'scroll', this._onScroll)), | |
viewportBoundsUpdateListener: j(o.subscribe('change', this._adjust)) | |
}); | |
this._adjust(); | |
}, | |
componentDidUpdate: function(t, u) { | |
if (u.fixed !== this.state.fixed) k.inform('reflow'); | |
}, | |
componentWillUnmount: function() { | |
this.state.adjustEventListener.unsubscribe(); | |
this.state.resizeListener.remove(); | |
this.state.scrollListener.remove(); | |
}, | |
_onScroll: function(event) { | |
var t = n.getScrollPosition().y; | |
this._scrollDelta = t - this._scroll; | |
this._scroll = t; | |
this._adjust(); | |
}, | |
_adjust: function() { | |
if (!this.isMounted()) return; | |
this._updateContainerHeight(); | |
this._updateColumnWidth(); | |
if (this._isContainerBelowViewportTop()) { | |
this._setNotFixed(0); | |
return; | |
} | |
if (!this._isColumnLargerThanViewport()) { | |
this._setFixedToTop(); | |
return; | |
} | |
if (this._scrollDelta > 0) | |
if (this._isBottomOfColumnVisible()) { | |
this._setFixedToBottom(); | |
return; | |
} | |
if (this._scrollDelta < 0) | |
if (this._isTopOfColumnVisible()) { | |
this._setFixedToTop(); | |
return; | |
} | |
var t = this._getTopPositionForRef('column'), | |
u = this._getTopPositionForRef('container'), | |
v = t - u; | |
this._setNotFixed(v); | |
}, | |
_getTopPositionForRef: function(t) { | |
var u = this.refs[t]; | |
h(u); | |
var v = n.getElementPosition(m.findDOMNode(u), 'viewport').y; | |
if (this._scroll < 0) v += this._scroll; | |
return v; | |
}, | |
_getTopBoundWithOffset: function() { | |
return o.getTop() + this.props.topOffset; | |
}, | |
_isContainerBelowViewportTop: function() { | |
var t = this._getTopPositionForRef('container'); | |
return t >= this._getTopBoundWithOffset(); | |
}, | |
_isColumnLargerThanViewport: function() { | |
var t = n.getViewportDimensions().y - o.getBottom() - this._getTopBoundWithOffset(); | |
return m.findDOMNode(this.refs.column).offsetHeight > t; | |
}, | |
_isBottomOfColumnVisible: function() { | |
var t = this._getTopPositionForRef('column'), | |
u = n.getElementDimensions(m.findDOMNode(this.refs.column), 'viewport').y, | |
v = t + u; | |
return v <= n.getViewportDimensions().y - o.getBottom(); | |
}, | |
_isTopOfColumnVisible: function() { | |
var t = this._getTopPositionForRef('column'); | |
return t >= this._getTopBoundWithOffset(); | |
}, | |
_getFixedLeft: function() { | |
return (n.getElementPosition(m.findDOMNode(this.refs.container), 'viewport').x); | |
}, | |
_setFixedToBottom: function() { | |
this.setState({ | |
fixed: 'bottom', | |
fixedBottom: o.getBottom(), | |
fixedLeft: this._getFixedLeft() | |
}); | |
}, | |
_setFixedToTop: function() { | |
this.setState({ | |
fixed: 'top', | |
fixedLeft: this._getFixedLeft(), | |
fixedTop: this._getTopBoundWithOffset() | |
}); | |
}, | |
_setNotFixed: function(t) { | |
this.setState({ | |
fixed: false, | |
top: t | |
}); | |
}, | |
_updateContainerHeight: function() { | |
m.findDOMNode(this.refs.container).style.height = m.findDOMNode(this.refs.column).offsetHeight + 'px'; | |
}, | |
_updateColumnWidth: function() { | |
m.findDOMNode(this.refs.column).style.width = m.findDOMNode(this.refs.container).offsetWidth + 'px'; | |
} | |
}); | |
s.EVENT_SHOULD_ADJUST = r; | |
e.exports = s; | |
}, null); | |
__d("TabBarItem.react", ["React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "TabBarItem", | |
getDefaultProps: function() { | |
return { | |
wrapper: 'li' | |
}; | |
}, | |
render: function() { | |
var k = (("_45hc") + (this.props.selected ? ' ' + "_1hqh" : '')), | |
l = this.props.wrapper, | |
m = this.props.href || '#', | |
n = this.props.ajaxify, | |
o = this.props.rel; | |
if (l) return (g.createElement(l, g.__spread({}, this.props, { | |
className: i(this.props.className, k) | |
}), g.createElement("a", { | |
ajaxify: n, | |
href: m, | |
rel: o, | |
target: this.props.target | |
}, this.props.children))); | |
return (g.createElement("a", g.__spread({}, this.props, { | |
ajaxify: n, | |
className: i(this.props.className, k), | |
href: m, | |
rel: o | |
}), this.props.children)); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("TabBarDropdownItem.react", ["ContextualDialogArrow", "ContextualLayerAutoFlip", "InlineBlock.react", "PopoverMenu.react", "React", "ReactXUIMenu", "TabBarItem.react", "cx", "onlyChild", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = k, | |
r = q.PropTypes, | |
s = k.createClass({ | |
displayName: "TabBarDropdownItem", | |
propTypes: { | |
tabComponent: r.func | |
}, | |
getDefaultProps: function() { | |
return { | |
tabComponent: m | |
}; | |
}, | |
_renderTab: function() { | |
var t = this.props.tabComponent, | |
u = "_45hd _45hc"; | |
return (k.createElement(t, k.__spread({}, this.props, { | |
wrapper: false, | |
className: p(this.props.className, u) | |
}), k.createElement("span", { | |
className: "_1b0" | |
}, this.props.label))); | |
}, | |
render: function() { | |
if (this.props.children) { | |
var t = this.props.selected ? l.SelectableMenu : l, | |
u = k.createElement(t, null, this.props.children.map(this.convertTabItemWrapperToMenuItem)), | |
v = [h, g]; | |
return (k.createElement("li", { | |
className: "_45hd" | |
}, k.createElement(j, { | |
menu: u, | |
layerBehaviors: v | |
}, this._renderTab()))); | |
} else return (k.createElement("li", { | |
className: "_45hd" | |
}, k.createElement(i, null, this._renderTab()))); | |
}, | |
convertTabItemWrapperToMenuItem: function(t, u) { | |
var v = this.props.selected ? l.SelectableItem : l.Item, | |
w = o(t.type.getComponent(t.props)); | |
return (k.createElement(v, k.__spread({}, w.props, { | |
key: u, | |
onclick: w.props.onClick | |
}), w.props.children)); | |
} | |
}); | |
e.exports = s; | |
}, null); | |
__d("TabBar.react", ["React", "ReactChildren", "TabBarDropdownItem.react", "TabBarItem.react", "cx", "fbt", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = g, | |
o = n.PropTypes, | |
p = l._("\u66f4\u591a"), | |
q = g.createClass({ | |
displayName: "TabBarItemWrapper", | |
statics: { | |
getComponent: function(s) { | |
return s.component; | |
} | |
}, | |
render: function() { | |
return this.props.component; | |
} | |
}), | |
r = g.createClass({ | |
displayName: "TabBar", | |
propTypes: { | |
activeTabKey: o.string, | |
alwaysShowActive: o.bool, | |
defaultActiveTabKey: o.string, | |
maxTabsVisible: o.number, | |
moreLabel: o.string, | |
onTabClick: o.func, | |
dropdownTabComponent: o.func, | |
onWidthCalculated: o.func, | |
shouldCalculateVisibleTabs: o.bool | |
}, | |
getDefaultProps: function() { | |
return { | |
alwaysShowActive: true, | |
dropdownTabComponent: j, | |
maxTabsVisible: Infinity, | |
moreLabel: p, | |
onTabClick: function() { | |
return true; | |
}, | |
shouldCalculateVisibleTabs: true | |
}; | |
}, | |
getInitialState: function() { | |
return { | |
activeTabKey: this.props.defaultActiveTabKey, | |
visibleTabs: 0, | |
shouldCalculateVisibleTabs: true | |
}; | |
}, | |
setWidth: function(s) { | |
g.findDOMNode(this).style.width = s; | |
this.setState({ | |
shouldCalculateVisibleTabs: true | |
}); | |
}, | |
render: function() { | |
var s = []; | |
h.forEach(this.props.children, function(ba) { | |
if (ba) s.push(ba); | |
}); | |
var t = s.length, | |
u = this.getActiveTabIndex(), | |
v = s[u]; | |
if (this.state.shouldCalculateVisibleTabs) { | |
s = s.map(function(ba, ca) { | |
ba = g.cloneElement(ba, { | |
selected: ca === u | |
}); | |
return (g.createElement(q, { | |
key: ba.key, | |
component: ba, | |
ref: ca | |
})); | |
}); | |
if (t > 2) s.push(g.createElement(i, { | |
key: "_dropdown", | |
ref: "more", | |
label: this.props.moreLabel, | |
tabComponent: this.props.dropdownTabComponent | |
})); | |
} else { | |
s = s.map(function(ba, ca) { | |
ba = g.cloneElement(ba, { | |
selected: v && v.key === ba.key, | |
onClick: this.onTabClick.bind(this, ba.key) | |
}); | |
return (g.createElement(q, { | |
key: ba.key, | |
component: ba, | |
ref: ca | |
})); | |
}.bind(this)); | |
var w = this.state.visibleTabs, | |
x; | |
if (w > 0) { | |
var y; | |
if (!this.props.alwaysShowActive || u < w) { | |
y = s.splice(w); | |
if (u >= w) x = true; | |
} else { | |
v = s.splice(u, 1)[0]; | |
y = s.splice(w - 1); | |
s.push(v); | |
} | |
if (y.length) s.push(g.createElement(i, { | |
selected: x, | |
key: "_dropdown", | |
label: this.props.moreLabel, | |
tabComponent: this.props.dropdownTabComponent | |
}, y)); | |
} else { | |
var z = v; | |
if (!v) z = q.getComponent(s[0].props); | |
var aa = z.props.children; | |
s = g.createElement(i, { | |
label: aa, | |
tabComponent: this.props.dropdownTabComponent, | |
selected: this.getActiveTabIndex() !== -1 | |
}, s); | |
} | |
} | |
return (g.createElement("ul", g.__spread({}, this.props, { | |
className: m(this.props.className, "_43o4") | |
}), s)); | |
}, | |
componentDidMount: function() { | |
this.calculateVisibleTabs(); | |
this.calculateWidth(); | |
}, | |
componentWillReceiveProps: function(s) { | |
this.setState({ | |
shouldCalculateVisibleTabs: true | |
}); | |
}, | |
componentDidUpdate: function() { | |
if (this.state.shouldCalculateVisibleTabs) this.calculateVisibleTabs(); | |
this.calculateWidth(); | |
}, | |
calculateWidth: function() { | |
if (this.props.onWidthCalculated) this.props.onWidthCalculated(g.findDOMNode(this).clientWidth); | |
}, | |
calculateVisibleTabs: function() { | |
var s = []; | |
h.forEach(this.props.children, function(ca) { | |
if (ca) s.push(ca); | |
}); | |
var t = s.length; | |
if (!this.props.shouldCalculateVisibleTabs) { | |
this.setState({ | |
visibleTabs: Math.min(t, this.props.maxTabsVisible), | |
shouldCalculateVisibleTabs: false | |
}); | |
return; | |
} | |
var u = []; | |
for (var v = 0; v < t; v++) u.push(g.findDOMNode(this.refs[v]).offsetWidth); | |
var w = this.getActiveTabIndex(); | |
if (this.props.alwaysShowActive && w !== -1) { | |
s.unshift(s.splice(w, 1)[0]); | |
u.unshift(u.splice(w, 1)[0]); | |
} | |
var x = g.findDOMNode(this).offsetWidth, | |
y = 0, | |
z = 0; | |
for (v = 0; v < t; v++) { | |
var aa = u[v]; | |
if (z + aa > x) { | |
if (y > 0 && t > 2) { | |
var ba = g.findDOMNode(this.refs.more).offsetWidth; | |
while (y > 0 && (z + ba > x || t - y < 2)) { | |
y--; | |
z -= u[y]; | |
} | |
} else y = 0; | |
break; | |
} | |
y++; | |
z += aa; | |
} | |
this.setState({ | |
visibleTabs: Math.min(y, this.props.maxTabsVisible), | |
shouldCalculateVisibleTabs: false | |
}); | |
}, | |
getActiveTabIndex: function() { | |
var s = this.props.activeTabKey || this.state.activeTabKey, | |
t = -1; | |
if (s) h.forEach(this.props.children, function(u, v) { | |
if (u && u.key === s) t = v; | |
}); | |
return t; | |
}, | |
onTabClick: function(s, event) { | |
var t = this.props.onTabClick(s, event); | |
if (t !== false) this.setState({ | |
activeTabKey: s, | |
shouldCalculateVisibleTabs: true | |
}); | |
return t; | |
} | |
}); | |
r.Tab = j; | |
r.DropdownItem = i; | |
e.exports = r; | |
}, null); | |
__d("XUIPageNavigationItem.react", ["React", "TabBarItem.react", "cx", "fbt", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = g, | |
m = l.PropTypes, | |
n = g.createClass({ | |
displayName: "XUIPageNavigationItem", | |
statics: { | |
propsForMenuItem: function(o) { | |
return Object.assign({}, o, { | |
className: "_5vwz _5vw-" | |
}); | |
} | |
}, | |
propTypes: { | |
selected: m.bool | |
}, | |
getDefaultProps: function() { | |
return { | |
selected: false | |
}; | |
}, | |
render: function() { | |
var o = (("_5vwz") + (this.props.selected ? ' ' + "_5vwy" : '')), | |
p = null; | |
if (this.props.selected) p = g.createElement("span", { | |
className: "accessible_elem" | |
}, j._("\u5df2\u9078\u64c7")); | |
return (g.createElement(h, g.__spread({}, this.props, { | |
className: k(this.props.className, o) | |
}), this.props.children, p, g.createElement("span", { | |
className: "_13xf" | |
}))); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("XUIPageNavigationGroup.react", ["React", "TabBar.react", "XUIPageNavigationItem.react"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "XUIPageNavigationGroup", | |
propTypes: { | |
moreLabel: k.string, | |
maxTabsVisible: function(m, n, o) { | |
var p = m[n]; | |
if (p != null && !(typeof p === 'number' && p >= 0)) return new Error(("Invalid `" + n + "` supplied to `" + o + "`, ") + ("expected positive integer.")); | |
}, | |
width: k.string | |
}, | |
getDefaultProps: function() { | |
return { | |
maxTabsVisible: Infinity | |
}; | |
}, | |
componentDidUpdate: function() { | |
this.refs.bar.setWidth(this.props.width); | |
}, | |
componentDidMount: function() { | |
this.refs.bar.setWidth(this.props.width); | |
}, | |
render: function() { | |
return g.createElement(h, g.__spread({}, this.props, { | |
ref: "bar" | |
}), this.props.children); | |
} | |
}); | |
l.Item = i; | |
e.exports = l; | |
}, null); | |
__d("XUIPageNavigation.react", ["Arbiter", "CSS", "DOMQuery", "Event", "LeftRight.react", "React", "ReactChildren", "ReactComponentWithPureRenderMixin", "SubscriptionsHandler", "UITinyViewportAction", "Vector", "ViewportBounds", "XUIPageNavigationGroup.react", "cloneWithProps", "csx", "cx", "invariant", "joinClasses", "throttle"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) { | |
b.__markCompiled && b.__markCompiled(); | |
var z = l, | |
aa = z.PropTypes, | |
ba = 15, | |
ca = 'bluebar', | |
da = 'caret', | |
ea = l.createClass({ | |
displayName: "XUIPageNavigation", | |
mixins: [n], | |
propTypes: { | |
selectedIndicator: aa.oneOf([da, ca]), | |
caretColor: aa.oneOf(['bg-blue', 'fbui-desktop-wash', 'fbui-desktop-background-light', 'fbui-red', 'fbui-green', 'fbui-desktop-divider-dark', 'white']), | |
size: aa.oneOf(['small', 'medium']), | |
scrollThreshold: aa.number | |
}, | |
getDefaultProps: function() { | |
return { | |
selectedIndicator: ca, | |
caretColor: 'fbui-desktop-wash', | |
size: 'medium', | |
scrollThreshold: 0 | |
}; | |
}, | |
getInitialState: function() { | |
return { | |
activeTabKey: undefined, | |
leftWidth: null | |
}; | |
}, | |
componentDidMount: function() { | |
this._subscriptions = new o(); | |
this.resizeNavbarGroups(); | |
this._listenForNavbarResize(); | |
var fa = "^.fixed_elem._5vx1"; | |
this.wrapper = i.scry(l.findDOMNode(this), fa)[0]; | |
if (this.wrapper) { | |
this._setViewportBounds(); | |
this._subscriptions.addSubscriptions(p.subscribe('change', function() { | |
if (p.isTiny()) { | |
this._bound.remove(); | |
} else this._setViewportBounds(); | |
}.bind(this))); | |
} | |
if (this.wrapper || i.scry(l.findDOMNode(this), "^._k").length) this._showDropshadowOnScroll(); | |
}, | |
componentWillUnmount: function() { | |
this._subscriptions.release(); | |
}, | |
onTabClick: function(fa, event) { | |
if (this.props.onTabClick) { | |
var ga = this.props.onTabClick(fa, event); | |
if (!ga) return ga; | |
} | |
if (!j.$E(event).isDefaultRequested()) this.setState({ | |
activeTabKey: fa | |
}); | |
}, | |
onWidthCalculated: function(fa, ga) { | |
this[fa ? '_rightWidth' : '_leftWidth'] = ga; | |
}, | |
render: function() { | |
var fa = this.props.selectedIndicator, | |
ga = this.props.size, | |
ha = (("_5vx2") + (ga === 'small' ? ' ' + "_5vx3" : '') + (ga === 'medium' ? ' ' + "_5vx4" : '') + (fa === da ? ' ' + "_5vx5" : '') + (fa === ca ? ' ' + "_5vx6" : '')), | |
ia = null; | |
if (fa === da) { | |
var ja = this.props.caretColor; | |
ia = ((ja === 'bg-blue' ? "_2d2c" : '') + (ja === 'fbui-desktop-wash' ? ' ' + "_4_np" : '') + (ja === 'fbui-desktop-background-light' ? ' ' + "_4_nr" : '') + (ja === 'fbui-red' ? ' ' + "_4_ns" : '') + (ja === 'fbui-green' ? ' ' + "_4_nv" : '') + (ja === 'fbui-desktop-divider-dark' ? ' ' + "_4_nz" : '') + (ja === 'white' ? ' ' + "_5-f" : '')); | |
} | |
var ka = x(ha, ia, this.props.className), | |
la = [], | |
ma = this.props.activeTabKey || this.state.activeTabKey || this.props.defaultActiveTabKey; | |
m.forEach(this.props.children, function(na, oa) { | |
var pa = { | |
onTabClick: this.onTabClick, | |
activeTabKey: ma, | |
onWidthCalculated: this.onWidthCalculated.bind(this, oa), | |
ref: oa ? 'right' : 'left', | |
key: oa | |
}; | |
if (oa === 0) pa.width = this.state.leftWidth; | |
la.push(t(na, pa)); | |
}.bind(this)); | |
w(la.length === 1 || la.length === 2); | |
return (l.createElement("div", { | |
className: ka | |
}, l.createElement(k, { | |
className: "_5vx7" | |
}, la))); | |
}, | |
_setViewportBounds: function() { | |
var fa = this.wrapper.offsetHeight, | |
ga = r.getTop(); | |
this._bound = r.addTop(ga + fa); | |
g.subscribe('page_transition', function() { | |
this._bound.remove(); | |
}); | |
}, | |
_listenForNavbarResize: function() { | |
this._subscriptions.addSubscriptions(j.listen(window, 'resize', y(this.resizeNavbarGroups, 30))); | |
}, | |
_showDropshadowOnScroll: function() { | |
this._subscriptions.addSubscriptions(j.listen(window, 'scroll', function() { | |
var fa = q.getScrollPosition().y > this.props.scrollThreshold; | |
if (this._hasDropshadow === fa) return; | |
this._hasDropshadow = fa; | |
h.conditionClass(l.findDOMNode(this), "_51j8", fa); | |
}.bind(this))); | |
}, | |
resizeNavbarGroups: function() { | |
if (!this.refs.left) return; | |
var fa = l.findDOMNode(this).clientWidth, | |
ga; | |
if (this.refs.right) { | |
ga = fa - this._rightWidth - ba; | |
if (ga < this._rightWidth) ga = this._rightWidth + ba; | |
} else ga = fa; | |
this.setState({ | |
leftWidth: ga + 'px' | |
}); | |
} | |
}); | |
ea.Group = s; | |
ea.Item = s.Item; | |
ea.Indicator = { | |
BlueBar: ca, | |
Caret: da | |
}; | |
e.exports = ea; | |
}, null); | |
__d("XComposerActorChangeController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/composer\/actor\/change\/", { | |
composer_id: { | |
type: "String", | |
required: true | |
}, | |
entry_point: { | |
type: "Enum", | |
required: true, | |
enumType: 1 | |
}, | |
from_actor_id: { | |
type: "Int", | |
required: true | |
}, | |
target_id: { | |
type: "Int", | |
required: true | |
} | |
}); | |
}, null); | |
__d("ComposerXActorSelector.react", ["ActorSelector.react", "ActorSelectorNuxTypes", "ActorURI", "Arbiter", "AsyncRequest", "React", "emptyFunction", "XActorSelectorNuxSeenWriteController", "XComposerActorChangeController", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = l, | |
r = q.PropTypes, | |
s = l.createClass({ | |
displayName: "ComposerXActorSelector", | |
propTypes: { | |
actorIDs: r.array.isRequired, | |
composerID: r.string.isRequired, | |
coverEnabled: r.bool.isRequired, | |
entryPoint: r.string.isRequired, | |
nuxEnabledCovered: r.bool, | |
nuxEnabledUncovered: r.bool, | |
nuxHoverContext: r.object, | |
onChange: r.func, | |
pagePermissions: r.object.isRequired, | |
selectedActorID: r.string.isRequired, | |
settingsURI: r.string, | |
targetID: r.string.isRequired | |
}, | |
getInitialState: function() { | |
return { | |
loading: false | |
}; | |
}, | |
componentWillMount: function() { | |
j.subscribe('ComposerXPages/composePostWithActor', function(t, u) { | |
if (u.actorID) this._updateCurrentActor(u.actorID, function() { | |
if (u.callback) u.callback(); | |
}); | |
}.bind(this)); | |
}, | |
render: function() { | |
return (l.createElement(g, { | |
actorIDs: this.props.actorIDs, | |
actorPermissions: this.props.pagePermissions, | |
className: this.props.className, | |
coverEnabled: this.props.coverEnabled, | |
loading: this.state.loading, | |
nuxBody: this._getNUXBody(), | |
nuxEnabledCovered: this.props.nuxEnabledCovered, | |
nuxEnabledUncovered: this.props.nuxEnabledUncovered, | |
nuxHoverContext: this.props.nuxHoverContext, | |
onChange: this._onChange, | |
onCompleteNux: this._onCompleteNux, | |
ref: "selector", | |
selectedActorID: this.props.selectedActorID, | |
settingsURI: this.props.settingsURI, | |
tooltipConstructor: this._getTooltipForActorName, | |
tooltipConstructorCovered: this._getCoveredTooltip | |
})); | |
}, | |
_getNUXBody: function() { | |
return (p._("\u9078\u64c7\u8981\u4ee5\u81ea\u5df1\u6216\u4f60\u7ba1\u7406\u7684\u5176\u4e2d\u4e00\u500b\u7c89\u7d72\u5c08\u9801\u8eab\u5206\u4f86\u767c\u4f48\u8cbc\u6587\u3002")); | |
}, | |
_getTooltipForActorName: function(t) { | |
return (p._("\u4ee5{actorName}\u7684\u8eab\u5206\u767c\u4f48", [p.param("actorName", t)])); | |
}, | |
_getCoveredTooltip: function() { | |
return (p._("\u4ee5\u4f60\u7ba1\u7406\u7684\u5176\u4e2d\u4e00\u500b\u7c89\u7d72\u5c08\u9801\u8eab\u5206\u767c\u4f48\u8cbc\u6587\u3002")); | |
}, | |
_onChange: function(t) { | |
if (this.props.onChange) { | |
this.props.onChange(t.value); | |
} else this._updateCurrentActor(t.value); | |
}, | |
_updateCurrentActor: function(t, u) { | |
u = u || m; | |
if (this.props.selectedActorID === t) { | |
u(); | |
return; | |
} | |
this.setState({ | |
loading: true | |
}); | |
var v = i.create(o.getURIBuilder().setString('composer_id', this.props.composerID).setEnum('entry_point', this.props.entryPoint).setInt('from_actor_id', this.props.selectedActorID).setInt('target_id', this.props.targetID).getURI(), t), | |
w = function() { | |
this.setState({ | |
loading: false | |
}); | |
}.bind(this); | |
new k().setURI(v).setErrorHandler(w).setServerDialogCancelHandler(w).setFinallyHandler(u).send(); | |
}, | |
_onCompleteNux: function(t) { | |
var u = t.isCovered, | |
v = u ? h.COMPOSER_COVERED : h.COMPOSER, | |
w = n.getURIBuilder().setEnum('nux_type', v).getURI(); | |
new k().setURI(w).send(); | |
} | |
}); | |
e.exports = s; | |
}, null); | |
__d("SwapButtonDEPRECATED", ["Event", "Arbiter", "CSS", "Focus"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
function k(l, m, n) { | |
this._swapperButton = l; | |
this._swappeeButton = m; | |
g.listen(l, 'click', this.swap.bind(this)); | |
if (n) g.listen(m, 'click', this.unswap.bind(this)); | |
h.subscribe('SwapButtonDEPRECATED/focusOnJoinButton', this.setFocusOnSwapper.bind(this), h.SUBSCRIBE_ALL); | |
} | |
Object.assign(k.prototype, { | |
_swapperButton: null, | |
_swappeeButton: null, | |
swap: function(l) { | |
i.hide(this._swapperButton); | |
i.show(this._swappeeButton); | |
l !== false && j.setWithoutOutline(this._swappeeButton); | |
}, | |
unswap: function(l) { | |
i.show(this._swapperButton); | |
i.hide(this._swappeeButton); | |
l !== false && j.setWithoutOutline(this._swapperButton); | |
}, | |
toggle: function() { | |
i.toggle(this._swapperButton); | |
i.toggle(this._swappeeButton); | |
}, | |
setFocusOnSwapper: function() { | |
this._swapperButton.focus(); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("HubbleContext", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = {}, | |
h = { | |
get: function(i) { | |
return g[i]; | |
}, | |
getPageID: function() { | |
return g.page && g.page.id; | |
}, | |
setContext: function(i) { | |
g = i; | |
}, | |
setKey: function(i, j) { | |
g[i] = j; | |
}, | |
reset: function() { | |
g = {}; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("HubbleLogger", ["BanzaiLogger", "ErrorUtils", "HubbleContext", "HubbleSurfaces", "arrayContains"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = null, | |
m = null, | |
n = null, | |
o = null, | |
p = Object.keys(j).map(function(r) { | |
return j[r]; | |
}), | |
q = { | |
getStatefulFields: function() { | |
return { | |
pageid: i.getPageID(), | |
platform: n, | |
prev_section: o, | |
section: l, | |
surface: m | |
}; | |
}, | |
logAction: function(r) { | |
g.log('HubbleLoggerConfig', Object.assign({}, this.getStatefulFields(), { | |
action: r | |
})); | |
}, | |
logMetric: function(r, s) { | |
g.log('HubbleLoggerConfig', Object.assign({}, this.getStatefulFields(), { | |
metric: r, | |
metric_value: s | |
})); | |
}, | |
reset: function() { | |
l = null; | |
m = null; | |
n = null; | |
o = null; | |
}, | |
setActiveSection: function(r) { | |
o = l; | |
l = r; | |
}, | |
setActiveSurface: function(r) { | |
if (!k(p, r)) { | |
h.reportError('Hubble: Invalid surface value: ' + r); | |
return; | |
} | |
m = r; | |
}, | |
setPlatform: function(r) { | |
n = r; | |
} | |
}; | |
e.exports = q; | |
}, null); | |
__d("XPageTabsReorderingController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/pages\/tabs\/reorder\/", { | |
page_id: { | |
type: "Int", | |
required: true | |
}, | |
__asyncDialog: { | |
type: "Int" | |
} | |
}); | |
}, null); | |
__d("PagesNavTabs", ["AsyncRequest", "React", "XPageTabsReorderingController", "XUIPageNavigation.react", "XUIPageNavigationGroup.react", "XUIPageNavigationItem.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
var o = 'manage_tabs', | |
p = { | |
renderPagesNavTabs: function(q, r, s, t, u, v) { | |
var w = r.map(function(y) { | |
return (h.createElement(l, { | |
href: y.href, | |
key: y.key | |
}, y.label)); | |
}); | |
if (u) { | |
var x = i.getURIBuilder().setInt('page_id', v).getURI(); | |
w.push(h.createElement(l, { | |
className: "_3ew_", | |
key: o | |
}, n._("\u7ba1\u7406\u9801\u7c64"))); | |
} | |
if (w.length === t + 1) t++; | |
h.render(h.createElement(j, { | |
defaultActiveTabKey: s, | |
onTabClick: function(y) { | |
if (y === o) { | |
new g(x).setData({ | |
rel: 'dialog' | |
}).send(); | |
return false; | |
} | |
return true; | |
} | |
}, h.createElement(k, { | |
maxTabsVisible: t | |
}, w)), q); | |
} | |
}; | |
e.exports = p; | |
}, null); | |
__d("PagesTimelineController", ["Arbiter"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
LOAD_SECTION: 'PagesTimelineController/loadSection', | |
SECTION_FULLY_LOADED: 'PagesTimelineController/sectionFullyLoaded', | |
ACTIVATE_SCRUBBER_ITEM: 'PagesTimelineController/activateScrubberItem', | |
FIRST_POSTS_LOADED: 'PagesTimelineController/firstPostsLoaded', | |
REMOVE_SECTION: 'PagesTimelineController/removeSection', | |
RECENT_SECTION_KEY: 'recent', | |
NAV_BAR_LOADED: 'PagesTimelineController/navBarLoaded', | |
ADJUST_ADS: 'PagesTimelineController/adjustAds', | |
BOTTOM_OFFSET: 100, | |
loadSection: function(i) { | |
g.inform(this.LOAD_SECTION, { | |
section_key: i | |
}, g.BEHAVIOR_STATE); | |
}, | |
sectionFullyLoaded: function(i) { | |
g.inform(this.SECTION_FULLY_LOADED, { | |
section_index: i | |
}, g.BEHAVIOR_PERSISTENT); | |
}, | |
activateScrubberItem: function(i) { | |
g.inform(this.ACTIVATE_SCRUBBER_ITEM, { | |
section_key: i | |
}, g.BEHAVIOR_STATE); | |
}, | |
firstPostsLoaded: function(i) { | |
g.inform(this.FIRST_POSTS_LOADED, { | |
section_key: i | |
}, g.BEHAVIOR_STATE); | |
}, | |
removeSection: function(i) { | |
g.inform(this.REMOVE_SECTION, { | |
section_key: i | |
}, g.BEHAVIOR_STATE); | |
}, | |
navBarLoaded: function() { | |
g.inform(this.NAV_BAR_LOADED, {}, g.BEHAVIOR_STATE); | |
}, | |
adjustAds: function() { | |
g.inform(this.ADJUST_ADS, {}, g.BEHAVIOR_STATE); | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("PagesPageletScrollColumn.react", ["Arbiter", "DOMContainer.react", "PagesTimelineController", "React", "ScrollColumn.react"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = j, | |
m = l.PropTypes, | |
n = 5, | |
o = j.createClass({ | |
displayName: "PagesPageletScrollColumn", | |
propTypes: { | |
pagelets: m.object.isRequired | |
}, | |
render: function() { | |
var p = j.createElement(k, { | |
ref: "scrollColumn", | |
zIndex: n | |
}, j.createElement(h, null, this.props.pagelets)); | |
return p; | |
}, | |
_adjustSize: function() { | |
g.inform(k.EVENT_SHOULD_ADJUST); | |
}, | |
componentDidMount: function() { | |
this._subscribers = [g.subscribe(i.NAV_BAR_LOADED, function() { | |
g.inform(k.EVENT_SHOULD_ADJUST); | |
}.bind(this)), g.subscribe('footerLoaded', this._adjustSize), g.subscribe('pagesSidePageletLoaded', this._adjustSize)]; | |
}, | |
componentWillUnmount: function() { | |
while (this._subscribers && this._subscribers.length) this._subscribers.pop().unsubscribe(); | |
} | |
}); | |
e.exports = o; | |
}, null); |
/*!CK:1175758259!*/ /*1438578105,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["nGPnh"]); | |
} | |
__d("ChatSidebarSections", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
MORE_ONLINE_FRIENDS: "more_online_friends", | |
MORE_ONLINE_COWORKERS: "more_online_coworkers", | |
OFFLINE_USERS: "offline_users", | |
ORDERED_LIST: "ordered_list", | |
ORDERED_COWORKERS: "ordered_coworkers", | |
TYPEAHEAD: "typeahead", | |
NOW_PINNED_LIST: "now_pinned_list" | |
}; | |
}, null); | |
__d("CreditCardFormParam", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
ACCOUNT_ID: "account_id", | |
ACCOUNT_COUNTRY_CODE: "account_country_code", | |
APP_ID: "app_id", | |
CARD_EXPIRATION: "exp", | |
CARD_FBID: "cc_fbid", | |
CARD_ID: "cc_id", | |
CARD_TYPE: "cardType", | |
CITY: "city", | |
CONTEXT_ID: "context_id", | |
COUNTRY: "country", | |
CSC_LENGTH: "csc_length", | |
EMAIL: "email", | |
FIRST_NAME: "firstName", | |
TRACKING_ID: "tracking_id", | |
JSFAIL_SOURCE: "jsfail_source", | |
KEYPRESS_TIMES: "kpts", | |
LAST_NAME: "lastName", | |
MONTH: "month", | |
STATE: "state", | |
STREET: "street", | |
STREET_2: "street2", | |
VALIDATE_ADDRESS: "validate_address", | |
VALIDATE_NAME: "validate_name", | |
VALIDATE_ZIP: "validate_zip", | |
YEAR: "year", | |
ZIP: "zip", | |
VALIDATOR_CHECKS: "checks", | |
CARD_NUMBER: "creditCardNumber", | |
CSC: "csc", | |
CARD_NUMBER_FIRST_6: "creditCardNumber_first6", | |
CARD_NUMBER_LAST_4: "creditCardNumber_last4", | |
CARD_NUMBER_TOKEN: "creditCardNumber_token", | |
CSC_TOKEN: "csc_token", | |
AUTH_LEVEL_FLAG: "auth_level", | |
AUTH_AMOUNT: "auth_amount", | |
AUTH_CURRENCY: "auth_currency", | |
AUTO_EXPAND_AUTH_LEVEL_FLAG: "auto_expand_auth_level", | |
PAYMENT_ITEM_TYPE: "payment_item_type", | |
CREDENTIAL_ID: "credential_id", | |
IS_STORED_BALANCE: "is_stored_balance" | |
}; | |
}, null); | |
__d("StoryAttachmentStyle", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
FALLBACK: "fallback", | |
SHARE: "share", | |
OG_COMPOSER_SIMPLE: "og_composer_simple", | |
SPORTS_MATCHUP: "sports_matchup", | |
SHARE_LARGE_IMAGE: "share_large_image", | |
PHOTO: "photo", | |
COVER_PHOTO: "cover_photo", | |
ALBUM: "album", | |
NEW_ALBUM: "new_album", | |
COUPON: "coupon", | |
QUESTION: "question", | |
ANSWER: "answer", | |
OPTION: "option", | |
GALLERY: "gallery", | |
STREAM_PUBLISH: "stream_publish", | |
MUSIC_AGGREGATION: "music_aggregation", | |
ITEM_LIST: "list", | |
HIGH_SCORE: "high_score", | |
SCORE_LEADERBOARD: "score_leaderboard", | |
FRIEND_LIST: "friend_list", | |
CHECKIN: "checkin", | |
POPULAR_OBJECTS: "popular_objects", | |
AVATAR_LIST: "avatar_list", | |
AVATAR: "avatar", | |
AVATAR_WITH_VIDEO: "avatar_with_video", | |
EVENT: "event", | |
MINUTIAE_EVENT: "minutiae_event", | |
EXPERIENCE: "experience", | |
LIFE_EVENT: "life_event", | |
TRAVEL_SLIDESHOW_LIFE_EVENT: "travel_slideshow_life_event", | |
GIFT: "gift", | |
IMAGE_SHARE: "image_share", | |
ANIMATED_IMAGE_SHARE: "animated_image_share", | |
ANIMATED_IMAGE_AUTOPLAY: "animated_image_autoplay", | |
ANIMATED_IMAGE_VIDEO: "animated_image_video", | |
ANIMATED_IMAGE_VIDEO_AUTOPLAY: "animated_image_video_autoplay", | |
NOTE: "note", | |
TOPIC: "topic", | |
FILE_UPLOAD: "file_upload", | |
NOTIFICATION_TARGET: "notification_target", | |
UNAVAILABLE: "unavailable", | |
PAGE_RECOMMENDATION: "page_recommendation", | |
PAGE_VIDEO_PLAYLIST: "page_video_playlist", | |
VIDEO: "video", | |
VIDEO_INLINE: "video_inline", | |
VIDEO_AUTOPLAY: "video_autoplay", | |
VIDEO_SHARE: "video_share", | |
VIDEO_SHARE_HIGHLIGHTED: "video_share_highlighted", | |
VIDEO_SHARE_YOUTUBE: "video_share_youtube", | |
MAP: "map", | |
OG_MAP: "og_map", | |
PRODUCT: "product", | |
EXTERNAL_PRODUCT: "external_product", | |
FITNESS_COURSE: "fitness_course", | |
APPLICATION: "application", | |
STICKER: "sticker", | |
EXTERNAL_OG_PRODUCT: "external_og_product", | |
TRAVEL_LOG: "travel_log", | |
MULTI_SHARE: "multi_share", | |
MULTI_SHARE_NO_END_CARD: "multi_share_no_end_card", | |
MULTI_SHARE_SEARCH_END_CARD: "multi_share_search_end_card", | |
YEAR_IN_REVIEW: "year_in_review", | |
AVATAR_LARGE_COVER: "avatar_large_cover", | |
BROADCAST_REQUEST: "broadcast_request", | |
COMMERCE_PRODUCT_ITEM: "commerce_product_item", | |
COMMERCE_STORE: "commerce_store", | |
THIRD_PARTY_PHOTO: "third_party_photo", | |
PROMPT: "prompt", | |
BIRTHDAY: "birthday", | |
DONATIONS_CAMPAIGN: "donations_campaign", | |
DONATE_PROMPT: "donate_prompt", | |
DISCUSSION_CONVERSATION: "discussion_conversation", | |
DISCUSSION_COMMENT: "discussion_comment", | |
GROUP_SELL_PRODUCT_ITEM: "group_sell_product_item", | |
GROUP_SELL_PRODUCT_ITEM_MARK_AS_SOLD: "group_sell_mark_as_sold", | |
GAMETIME: "gametime", | |
GROUP_REPORTED_POST_QUEUE: "group_reported_post_queue", | |
GROUP_PENDING_POST_QUEUE: "group_pending_post_queue", | |
GROUP_JOIN_REQUEST_QUEUE: "group_join_request_queue", | |
GREETING_CARD: "greeting_card", | |
LEAD_GEN: "lead_gen", | |
ATTACHED_STORY: "attached_story", | |
SOUVENIR: "souvenir", | |
SLIDESHOW: "slideshow", | |
ORION: "orion", | |
ORION_REQUEST: "orion_request", | |
INSTANT_ARTICLE: "instant_article", | |
JOIN_TOPIC_CONVERSATION: "join_topic_conversation", | |
MOMENTS_APP_INVITATION: "moments_app_invitation", | |
RETAIL_CANCELLATION: "retail_cancellation", | |
RETAIL_ITEM: "retail_item", | |
RETAIL_NOW_IN_STOCK: "retail_now_in_stock", | |
RETAIL_RECEIPT: "retail_receipt", | |
RETAIL_SHIPMENT: "retail_shipment", | |
RETAIL_SHIPMENT_FOR_SUPPORTED_CARRIER: "retail_shipment_for_supported_carrier", | |
RETAIL_SHIPMENT_FOR_UNSUPPORTED_CARRIER: "retail_shipment_for_unsupported_carrier", | |
RETAIL_SHIPMENT_TRACKING_EVENT: "retail_shipment_tracking_event", | |
RETAIL_SHIPMENT_TRACKING_EVENT_ETA: "retail_shipment_tracking_event_eta", | |
RETAIL_SHIPMENT_TRACKING_EVENT_IN_TRANSIT: "retail_shipment_tracking_event_in_transit", | |
RETAIL_SHIPMENT_TRACKING_EVENT_OUT_FOR_DELIVERY: "retail_shipment_tracking_event_out_for_delivery", | |
RETAIL_SHIPMENT_TRACKING_EVENT_DELAYED: "retail_shipment_tracking_event_delayed", | |
RETAIL_SHIPMENT_TRACKING_EVENT_DELIVERED: "retail_shipment_tracking_event_delivered", | |
SURVEY: "survey", | |
MESSAGE_LOCATION: "message_location", | |
JOB_OFFER: "job_offer", | |
GROUP_ADD_MEMBERS: "group_add_memebers", | |
RTC_CALL_LOG: "rtc_call_log", | |
EVENT_CALENDAR: "event_calendar", | |
FACEPILE: "facepile", | |
ATTRIBUTED_SHARE: "attributed_share", | |
VIDEO_CINEMAGRAPH: "video_cinemagraph", | |
LOCAL_CONTEXT_SHARE: "local_context_share", | |
H_SCROLL: "h_scroll", | |
MEDIA_QUESTION: "media_question", | |
RICH_MEDIA: "rich_media", | |
SQUARE_IMAGE_SHARE: "square_image_share", | |
RETAIL_AGENT_ITEM_SUGGESTION: "retail_agent_item_suggestion", | |
RETAIL_AGENT_ITEM_RECEIPT: "retail_agent_item_receipt", | |
NOTE_COMPOSED: "note_composed", | |
AVATAR_WITH_BIRTHDAY: "avatar_with_birthday", | |
AIRLINE_FLIGHT_RESCHEDULE_UPDATE_BUBBLE: "airline_flight_reschedule_update_bubble", | |
LIGHTBOX_VIDEO: "lightbox_video", | |
GLOBALLY_DELETED_MESSAGE_PLACEHOLDER: "globally_deleted_message_placeholder", | |
AVATAR_WITH_EGO_ACTION: "avatar_with_ego_action", | |
EVENT_TICKET: "event_ticket", | |
VERTICAL_ATTACHMENT_LIST: "vertical_attachment_list", | |
INSTANT_ARTICLE_LEGACY: "instant_article_legacy", | |
FUNDRAISER_PAGE: "fundraiser_page" | |
}; | |
}, null); | |
__d("ItunesPluginLogging", ["Run", "Bootloader"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
logPluginData: function() { | |
g.onAfterLoad(function() { | |
var i = b('Bootloader'); | |
i.loadModules(["ItunesDetector", "AsyncRequest"], function(j, k) { | |
new k().setURI('/ajax/ads/media/log').setData({ | |
status: j.hasItunes() | |
}).send(); | |
}); | |
}); | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("NotificationBeeperModuleLoader", ["BootloadedComponent.react", "JSResource", "React"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = { | |
load: function(k, l) { | |
i.render(i.createElement(g, i.__spread({ | |
bootloadPlaceholder: i.createElement("span", null), | |
bootloadLoader: h('NotificationBeeper.react') | |
}, k)), l); | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("SyncRequestTitle.react", ["React", "fbt", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "SyncRequestTitle", | |
propTypes: { | |
appName: k.string.isRequired, | |
isSender: k.bool.isRequired, | |
receiverName: k.string.isRequired, | |
senderName: k.string.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (g.createElement("div", null, h._("Waiting for {receiver} to accept your invite to play {app_name}.", [h.param("receiver", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.receiverName)), h.param("app_name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} else return (g.createElement("div", null, h._("{sender} wants to play {app_name} with you, right now.", [h.param("sender", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.senderName)), h.param("app_name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("SyncRequestAcceptedMessage.react", ["React", "fbt", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "SyncRequestAcceptedMessage", | |
propTypes: { | |
appName: k.string.isRequired, | |
isSender: k.bool.isRequired, | |
receiverName: k.string.isRequired, | |
senderName: k.string.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (g.createElement("div", null, h._("{receiver} accepted your invite to play {app name}.", [h.param("receiver", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.receiverName)), h.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} else return (g.createElement("div", null, h._("You accepted an invite from {sender} to play {app name}.", [h.param("sender", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.senderName)), h.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("SyncRequestRejectedMessage.react", ["AsyncRequest", "Link.react", "React", "URI", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = i, | |
n = m.PropTypes, | |
o = i.createClass({ | |
displayName: "SyncRequestRejectedMessage", | |
propTypes: { | |
requestId: n.string.isRequired, | |
app: n.object.isRequired, | |
isSender: n.bool.isRequired, | |
receiver: n.object.isRequired, | |
sender: n.object.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (i.createElement("div", null, l._("{receiver} declined your invite to play {app_name}.", [l.param("receiver", i.createElement("span", { | |
className: "_dg4" | |
}, this.props.receiver.name)), l.param("app_name", i.createElement("span", { | |
className: "_dg5" | |
}, this.props.app.name))]))); | |
} else return (i.createElement("div", null, l._("You declined an invite from {sender} to play {app_name}.", [l.param("sender", i.createElement("span", { | |
className: "_dg4" | |
}, this.props.sender.name)), l.param("app_name", i.createElement("span", { | |
className: "_dg5" | |
}, this.props.app.name))]), i.createElement("div", { | |
className: "_13n7" | |
}, i.createElement("div", null, i.createElement(h, { | |
onClick: this._submitBlockApp | |
}, l._("\u5c01\u9396{app}\uff1f", [l.param("app", this.props.app.name)]))), i.createElement("div", null, i.createElement(h, { | |
onClick: this._submitBlockUser | |
}, l._("Block requests from {sender}", [l.param("sender", this.props.sender.name)])))))); | |
}, | |
_submitBlockApp: function() { | |
var p = new j('/games/block_app/'), | |
q = new g().setURI(p); | |
q.setData({ | |
app_id: this.props.app.id, | |
source: 'sync_request' | |
}); | |
q.send(); | |
}, | |
_submitBlockUser: function() { | |
var p = new j('/games/block_user/'), | |
q = new g().setURI(p); | |
q.setData({ | |
app_id: this.props.app.id, | |
blockee_uid: this.props.sender.id | |
}); | |
q.send(); | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("SyncRequestExpiredMessage.react", ["React", "fbt", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "SyncRequestExpiredMessage", | |
propTypes: { | |
appName: k.string.isRequired, | |
isSender: k.bool.isRequired, | |
receiverName: k.string.isRequired, | |
senderName: k.string.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (g.createElement("div", null, h._("{receiver} missed your invite to play {app name}.", [h.param("receiver", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.receiverName)), h.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} else return (g.createElement("div", null, h._("You missed an invite from {sender} to play {app name}.", [h.param("sender", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.senderName)), h.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("SyncRequestCanceledMessage.react", ["React", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "SyncRequestCanceledMessage", | |
propTypes: { | |
appName: k.string.isRequired, | |
isSender: k.bool.isRequired, | |
receiverName: k.string.isRequired, | |
senderName: k.string.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (g.createElement("div", null, i._("You canceled an invite to {receiver} to play {app name}.", [i.param("receiver", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.receiverName)), i.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} else return (g.createElement("div", null, i._("{sender} canceled an invitation to play {app name}.", [i.param("sender", g.createElement("span", { | |
className: "_dg4" | |
}, this.props.senderName)), i.param("app name", g.createElement("span", { | |
className: "_dg5" | |
}, this.props.appName))]))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("SyncRequestTimer.react", ["React", "fbt"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g, | |
j = i.PropTypes; | |
function k(m) { | |
if (m) { | |
m = Math.ceil(m); | |
var n = m % 60; | |
if (n < 10) n = '0' + n; | |
var o = Math.floor(m / 60); | |
return o + ':' + n; | |
} else return "0:00"; | |
} | |
var l = g.createClass({ | |
displayName: "SyncRequestTimer", | |
propTypes: { | |
timeRemaining: j.number.isRequired, | |
isSender: j.bool.isRequired, | |
receiverName: j.string.isRequired | |
}, | |
render: function() { | |
if (this.props.isSender) { | |
return (g.createElement("div", null, h._("({time_remaining} remaining)", [h.param("time_remaining", k(this.props.timeRemaining))]))); | |
} else return (g.createElement("div", null, h._("You have {time_remaining} to accept.", [h.param("time_remaining", k(this.props.timeRemaining))]))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("XSyncRequestSubmitController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/platform\/games\/sync_requests\/submit\/", { | |
request_id: { | |
type: "Int", | |
required: true | |
}, | |
sender: { | |
type: "Int", | |
required: true | |
}, | |
action: { | |
type: "Int", | |
required: true | |
} | |
}); | |
}, null); | |
__d("SyncRequest.react", ["Arbiter", "AsyncRequest", "ChannelConstants", "React", "SyncRequestStatusEnum", "SyncRequestTitle.react", "SyncRequestAcceptedMessage.react", "SyncRequestRejectedMessage.react", "SyncRequestExpiredMessage.react", "SyncRequestCanceledMessage.react", "SyncRequestTimer.react", "XUIButton.react", "XSyncRequestSubmitController", "cx", "fbt", "getObjectValues"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) { | |
b.__markCompiled && b.__markCompiled(); | |
var w = j, | |
x = w.PropTypes, | |
y = j.createClass({ | |
displayName: "SyncRequest", | |
propTypes: { | |
app: x.object.isRequired, | |
creationTime: x.number.isRequired, | |
requestId: x.string.isRequired, | |
receiver: x.object.isRequired, | |
sender: x.object.isRequired, | |
status: x.oneOf(v(k)).isRequired, | |
timeout: x.number.isRequired, | |
timeRemaining: x.number.isRequired, | |
viewerId: x.number.isRequired, | |
onStatusUpdate: x.func | |
}, | |
componentWillMount: function() { | |
if (this.props.status === k.PENDING) { | |
var z = g.subscribe(i.getArbiterType('sync_request_updated'), function(ca, da) { | |
da = da.obj; | |
if (da.id.toString() !== this.props.requestId) return; | |
this.setState({ | |
status: da.status | |
}); | |
}.bind(this)); | |
this.setState({ | |
statusEvent: z | |
}); | |
} | |
var aa = null; | |
if (this.props.status === k.PENDING) { | |
var ba = function() { | |
this.setState({ | |
time_remaining: (this.state.time_remaining - 1) | |
}); | |
if (this.state.time_remaining <= 0) { | |
clearInterval(this.state.counter); | |
var ca = { | |
counter: null, | |
time_remaining: 0 | |
}; | |
if (this.state.status === k.PENDING) ca.status = k.EXPIRED; | |
this.setState(ca); | |
} | |
}; | |
aa = setInterval(ba.bind(this), 1000); | |
} | |
this.setState({ | |
time_remaining: this.props.timeRemaining, | |
counter: aa | |
}); | |
}, | |
componentWillUnmount: function() { | |
if (this.state.counter) clearInterval(this.state.counter); | |
g.unsubscribe(this.state.statusEvent); | |
}, | |
getInitialState: function() { | |
return { | |
buttonsDisabled: false, | |
time: Date.now(), | |
status: this.props.status, | |
viewerIsSender: this.props.viewerId === this.props.sender.id | |
}; | |
}, | |
componentDidUpdate: function(z, aa) { | |
if (this.props.status != k.PENDING) this.state.status = this.props.status; | |
if (this.props.onStatusUpdate) this.props.onStatusUpdate(this.state.status, aa.status); | |
}, | |
render: function() { | |
var z; | |
switch (this.state.status) { | |
case k.PENDING: | |
var aa; | |
if (!this.state.viewerIsSender) { | |
aa = [j.createElement(r, { | |
use: "confirm", | |
onClick: this._handleAccept, | |
disabled: this.state.buttonsDisabled, | |
label: u._("\u63a5\u53d7") | |
}), j.createElement(r, { | |
use: "default", | |
onClick: this._handleReject, | |
disabled: this.state.buttonsDisabled, | |
label: u._("\u4e0d\u53c3\u52a0") | |
})]; | |
} else aa = j.createElement(r, { | |
use: "default", | |
onClick: this._handleCancel, | |
disabled: this.state.buttonsDisabled, | |
label: u._("\u53d6\u6d88") | |
}); | |
z = (j.createElement("div", null, j.createElement("div", { | |
className: "_372m" | |
}, j.createElement(l, { | |
appName: this.props.app.name, | |
isSender: this.state.viewerIsSender, | |
receiverName: this.props.receiver.name, | |
senderName: this.props.sender.name | |
})), j.createElement("div", { | |
className: "_372n" | |
}, j.createElement(q, { | |
isSender: this.state.viewerIsSender, | |
timeRemaining: this.state.time_remaining, | |
receiverName: this.props.receiver.name | |
})), j.createElement("div", { | |
className: "_372o" | |
}, aa))); | |
break; | |
case k.ACCEPTED: | |
z = j.createElement("div", { | |
className: "_372p mvs" | |
}, j.createElement(m, { | |
appName: this.props.app.name, | |
isSender: this.state.viewerIsSender, | |
receiverName: this.props.receiver.name, | |
senderName: this.props.sender.name | |
})); | |
break; | |
case k.REJECTED: | |
z = j.createElement("div", { | |
className: "_372p mvs" | |
}, j.createElement(n, { | |
requestId: this.props.requestId, | |
app: this.props.app, | |
isSender: this.state.viewerIsSender, | |
receiver: this.props.receiver, | |
sender: this.props.sender | |
})); | |
break; | |
case k.EXPIRED: | |
z = j.createElement("div", { | |
className: "_372p mvs" | |
}, j.createElement(o, { | |
appName: this.props.app.name, | |
isSender: this.state.viewerIsSender, | |
receiverName: this.props.receiver.name, | |
senderName: this.props.sender.name | |
})); | |
break; | |
case k.CANCELED: | |
z = j.createElement("div", { | |
className: "_372p mvs" | |
}, j.createElement(p, { | |
appName: this.props.app.name, | |
isSender: this.state.viewerIsSender, | |
receiverName: this.props.receiver.name, | |
senderName: this.props.sender.name | |
})); | |
break; | |
default: | |
throw new Error('The request status `%s` is unknown.', this.state.status); | |
} | |
return (j.createElement("div", { | |
className: "_372q" | |
}, z)); | |
}, | |
_handleAccept: function() { | |
this._handleStatusUpdate(k.ACCEPTED); | |
var z = window.open(this.props.app.uri); | |
if (z) z.focus(); | |
}, | |
_handleReject: function() { | |
this._handleStatusUpdate(k.REJECTED); | |
}, | |
_handleCancel: function() { | |
this._handleStatusUpdate(k.CANCELED); | |
}, | |
_handleStatusUpdate: function(z) { | |
this.setState({ | |
status: z, | |
buttonsDisabled: true | |
}); | |
var aa = s.getURIBuilder().setInt('request_id', this.props.requestId).setInt('sender', this.props.sender.id).setInt('action', z).getURI(); | |
new h().setURI(aa).setHandler(function(ba) { | |
this.setState({ | |
status: z | |
}); | |
}.bind(this)).setErrorHandler(function(ba) { | |
this.setState({ | |
buttonsDisabled: false | |
}); | |
}.bind(this)).send(); | |
} | |
}); | |
e.exports = y; | |
}, null); | |
__d("AbstractBadge.react", ["React", "cx", "invariant", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = g, | |
l = k.PropTypes; | |
function m(o) { | |
return parseInt(o, 10) === o; | |
} | |
var n = g.createClass({ | |
displayName: "AbstractBadge", | |
propTypes: { | |
count: l.number.isRequired, | |
maxcount: l.number | |
}, | |
getDefaultProps: function() { | |
return { | |
maxcount: 20 | |
}; | |
}, | |
render: function() { | |
var o = this.props.count, | |
p = this.props.maxcount; | |
i(m(o)); | |
i(m(p)); | |
var q = (("_51lp") + (o > p ? ' ' + "_51lr" : '') + (o === 0 ? ' ' + "hidden_elem" : '')); | |
return (g.createElement("span", g.__spread({}, this.props, { | |
className: j(this.props.className, q) | |
}), o > p ? p + '+' : o)); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("XUIBadge.react", ["React", "AbstractBadge.react", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = g, | |
l = k.PropTypes, | |
m = g.createClass({ | |
displayName: "XUIBadge", | |
propTypes: { | |
type: l.oneOf(['regular', 'special']) | |
}, | |
getDefaultProps: function() { | |
return { | |
type: 'regular' | |
}; | |
}, | |
render: function() { | |
var n = this.props.type, | |
o = (("_5ugh") + (n === 'regular' ? ' ' + "_5ugf" : '') + (n === 'special' ? ' ' + "_5ugg" : '')); | |
return (g.createElement(h, g.__spread({}, this.props, { | |
className: j(this.props.className, o), | |
type: null | |
}))); | |
} | |
}); | |
e.exports = m; | |
}, null); | |
__d("str2rstr", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h) { | |
var i = "", | |
j, k; | |
for (var l = 0; l < h.length; l++) { | |
j = h.charCodeAt(l); | |
k = l + 1 < h.length ? h.charCodeAt(l + 1) : 0; | |
if (55296 <= j && j <= 56319 && 56320 <= k && k <= 57343) { | |
j = 65536 + ((j & 1023) << 10) + (k & 1023); | |
l++; | |
} | |
if (j <= 127) { | |
i += String.fromCharCode(j); | |
} else if (j <= 2047) { | |
i += String.fromCharCode(192 | ((j >>> 6) & 31), 128 | (j & 63)); | |
} else if (j <= 65535) { | |
i += String.fromCharCode(224 | ((j >>> 12) & 15), 128 | ((j >>> 6) & 63), 128 | (j & 63)); | |
} else if (j <= 2097151) i += String.fromCharCode(240 | ((j >>> 18) & 7), 128 | ((j >>> 12) & 63), 128 | ((j >>> 6) & 63), 128 | (j & 63)); | |
} | |
return i; | |
} | |
e.exports = g; | |
}, null); | |
__d("md5", ["str2rstr"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(u, v) { | |
var w = u[0], | |
x = u[1], | |
y = u[2], | |
z = u[3]; | |
w = j(w, x, y, z, v[0], 7, -680876936); | |
z = j(z, w, x, y, v[1], 12, -389564586); | |
y = j(y, z, w, x, v[2], 17, 606105819); | |
x = j(x, y, z, w, v[3], 22, -1044525330); | |
w = j(w, x, y, z, v[4], 7, -176418897); | |
z = j(z, w, x, y, v[5], 12, 1200080426); | |
y = j(y, z, w, x, v[6], 17, -1473231341); | |
x = j(x, y, z, w, v[7], 22, -45705983); | |
w = j(w, x, y, z, v[8], 7, 1770035416); | |
z = j(z, w, x, y, v[9], 12, -1958414417); | |
y = j(y, z, w, x, v[10], 17, -42063); | |
x = j(x, y, z, w, v[11], 22, -1990404162); | |
w = j(w, x, y, z, v[12], 7, 1804603682); | |
z = j(z, w, x, y, v[13], 12, -40341101); | |
y = j(y, z, w, x, v[14], 17, -1502002290); | |
x = j(x, y, z, w, v[15], 22, 1236535329); | |
w = k(w, x, y, z, v[1], 5, -165796510); | |
z = k(z, w, x, y, v[6], 9, -1069501632); | |
y = k(y, z, w, x, v[11], 14, 643717713); | |
x = k(x, y, z, w, v[0], 20, -373897302); | |
w = k(w, x, y, z, v[5], 5, -701558691); | |
z = k(z, w, x, y, v[10], 9, 38016083); | |
y = k(y, z, w, x, v[15], 14, -660478335); | |
x = k(x, y, z, w, v[4], 20, -405537848); | |
w = k(w, x, y, z, v[9], 5, 568446438); | |
z = k(z, w, x, y, v[14], 9, -1019803690); | |
y = k(y, z, w, x, v[3], 14, -187363961); | |
x = k(x, y, z, w, v[8], 20, 1163531501); | |
w = k(w, x, y, z, v[13], 5, -1444681467); | |
z = k(z, w, x, y, v[2], 9, -51403784); | |
y = k(y, z, w, x, v[7], 14, 1735328473); | |
x = k(x, y, z, w, v[12], 20, -1926607734); | |
w = l(w, x, y, z, v[5], 4, -378558); | |
z = l(z, w, x, y, v[8], 11, -2022574463); | |
y = l(y, z, w, x, v[11], 16, 1839030562); | |
x = l(x, y, z, w, v[14], 23, -35309556); | |
w = l(w, x, y, z, v[1], 4, -1530992060); | |
z = l(z, w, x, y, v[4], 11, 1272893353); | |
y = l(y, z, w, x, v[7], 16, -155497632); | |
x = l(x, y, z, w, v[10], 23, -1094730640); | |
w = l(w, x, y, z, v[13], 4, 681279174); | |
z = l(z, w, x, y, v[0], 11, -358537222); | |
y = l(y, z, w, x, v[3], 16, -722521979); | |
x = l(x, y, z, w, v[6], 23, 76029189); | |
w = l(w, x, y, z, v[9], 4, -640364487); | |
z = l(z, w, x, y, v[12], 11, -421815835); | |
y = l(y, z, w, x, v[15], 16, 530742520); | |
x = l(x, y, z, w, v[2], 23, -995338651); | |
w = m(w, x, y, z, v[0], 6, -198630844); | |
z = m(z, w, x, y, v[7], 10, 1126891415); | |
y = m(y, z, w, x, v[14], 15, -1416354905); | |
x = m(x, y, z, w, v[5], 21, -57434055); | |
w = m(w, x, y, z, v[12], 6, 1700485571); | |
z = m(z, w, x, y, v[3], 10, -1894986606); | |
y = m(y, z, w, x, v[10], 15, -1051523); | |
x = m(x, y, z, w, v[1], 21, -2054922799); | |
w = m(w, x, y, z, v[8], 6, 1873313359); | |
z = m(z, w, x, y, v[15], 10, -30611744); | |
y = m(y, z, w, x, v[6], 15, -1560198380); | |
x = m(x, y, z, w, v[13], 21, 1309151649); | |
w = m(w, x, y, z, v[4], 6, -145523070); | |
z = m(z, w, x, y, v[11], 10, -1120210379); | |
y = m(y, z, w, x, v[2], 15, 718787259); | |
x = m(x, y, z, w, v[9], 21, -343485551); | |
u[0] = s(w, u[0]); | |
u[1] = s(x, u[1]); | |
u[2] = s(y, u[2]); | |
u[3] = s(z, u[3]); | |
} | |
function i(u, v, w, x, y, z) { | |
v = s(s(v, u), s(x, z)); | |
return s((v << y) | (v >>> (32 - y)), w); | |
} | |
function j(u, v, w, x, y, z, aa) { | |
return i((v & w) | ((~v) & x), u, v, y, z, aa); | |
} | |
function k(u, v, w, x, y, z, aa) { | |
return i((v & x) | (w & (~x)), u, v, y, z, aa); | |
} | |
function l(u, v, w, x, y, z, aa) { | |
return i(v ^ w ^ x, u, v, y, z, aa); | |
} | |
function m(u, v, w, x, y, z, aa) { | |
return i(w ^ (v | (~x)), u, v, y, z, aa); | |
} | |
function n(u) { | |
var v = u.length, | |
w = [1732584193, -271733879, -1732584194, 271733878], | |
x; | |
for (x = 64; x <= u.length; x += 64) h(w, o(u.substring(x - 64, x))); | |
u = u.substring(x - 64); | |
var y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; | |
for (x = 0; x < u.length; x++) y[x >> 2] |= u.charCodeAt(x) << ((x & 3) << 3); | |
y[x >> 2] |= 128 << ((x & 3) << 3); | |
if (x > 55) { | |
h(w, y); | |
for (x = 0; x < 16; x++) y[x] = 0; | |
} | |
y[14] = v * 8; | |
h(w, y); | |
return w; | |
} | |
function o(u) { | |
var v = [], | |
w = 0; | |
while (w < 64) v[w >> 2] = u.charCodeAt(w++) | (u.charCodeAt(w++) << 8) | (u.charCodeAt(w++) << 16) | (u.charCodeAt(w++) << 24); | |
return v; | |
} | |
var p = '0123456789abcdef'.split(''); | |
function q(u) { | |
var v = '', | |
w = 0; | |
for (; w < 4; w++) v += p[(u >> ((w << 3) + 4)) & 15] + p[(u >> (w << 3)) & 15]; | |
return v; | |
} | |
function r(u) { | |
for (var v = 0; v < u.length; v++) u[v] = q(u[v]); | |
return u.join(''); | |
} | |
var s = function(u, v) { | |
return (u + v) & 4294967295; | |
}; | |
function t(u) { | |
if (null === u || (void 0) === u) { | |
return null; | |
} else { | |
for (var v = 0; v < u.length; v++) | |
if (u[v] > "\u007F") { | |
u = g(u); | |
break; | |
} | |
return r(n(u)); | |
} | |
} | |
if (t('hello') != '5d41402abc4b2a76b9719d911017c592') s = function(u, v) { | |
var w = (u & 65535) + (v & 65535), | |
x = (u >> 16) + (v >> 16) + (w >> 16); | |
return (x << 16) | (w & 65535); | |
}; | |
e.exports = t; | |
}, null); | |
__d("LineClamp.react", ["React", "cx", "getVendorPrefixedName", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = g, | |
l = k.PropTypes, | |
m = i('lineClamp'), | |
n = g.createClass({ | |
displayName: "LineClamp", | |
propTypes: { | |
customEllipsis: l.node, | |
disableNative: l.bool, | |
lineHeight: l.number, | |
lines: l.number.isRequired | |
}, | |
_renderEllipsis: function() { | |
var o; | |
if (this.props.lineHeight) o = { | |
bottom: this.props.lineHeight + 'px' | |
}; | |
return (g.createElement("div", { | |
style: o, | |
className: "_4ik3", | |
key: "ellipsis" | |
}, this.props.customEllipsis ? this.props.customEllipsis : '\u2026')); | |
}, | |
render: function() { | |
var o = !!m && !this.props.disableNative, | |
p = j(this.props.className, (("_4ik4") + (o ? ' ' + "_4ik5" : ''))), | |
q = this.props.children, | |
r = {}; | |
if (this.props.lineHeight) r = { | |
height: this.props.lineHeight * this.props.lines, | |
lineHeight: this.props.lineHeight + 'px' | |
}; | |
if (o) { | |
r[m] = this.props.lines; | |
} else { | |
p = j(p, 'clearfix'); | |
q = [g.createElement("div", { | |
className: "_4ik6", | |
key: "inner" | |
}, q), this._renderEllipsis()]; | |
} | |
return (g.createElement("div", { | |
className: p, | |
style: r | |
}, q)); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("PhotoStoreCore", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
actions: { | |
UPDATE: 'update' | |
}, | |
_photoCache: {}, | |
_postCreateCallbacks: {}, | |
getPhotoCache: function(h) { | |
if (!this._photoCache[h]) throw new Error('Photo cache requested for unknown set ID'); | |
return this._photoCache[h]; | |
}, | |
hasBeenCreated: function(h) { | |
return !!this._photoCache[h]; | |
}, | |
clearSetCache: function(h) { | |
delete this._photoCache[h]; | |
delete this._postCreateCallbacks[h]; | |
}, | |
getByIndex: function(h, i, j) { | |
this.getPhotoCache(h).getItemAtIndex(i, j); | |
}, | |
getByIndexImmediate: function(h, i) { | |
if (this._photoCache[h]) return this._photoCache[h].getItemAtIndexImmediate(i); | |
return (void 0); | |
}, | |
getItemsInAvailableRange: function(h) { | |
var i = this.getAvailableRange(h), | |
j = []; | |
for (var k = i.offset; k < i.length; k++) j.push(this.getByIndexImmediate(h, k)); | |
return j; | |
}, | |
getItemsAfterIndex: function(h, i, j, k) { | |
var l = this.getCursorByIndexImmediate(h, i); | |
this.fetchForward(h, l, j, k); | |
}, | |
getAllByIDImmediate: function(h) { | |
var i = Object.keys(this._photoCache); | |
return i.map(function(j) { | |
return this.getByIndexImmediate(j, this.getIndexForID(j, h)); | |
}.bind(this)).filter(function(j) { | |
return !!j; | |
}); | |
}, | |
getIndexForID: function(h, i) { | |
if (this._photoCache[h]) return this._photoCache[h].getIndexForID(i); | |
return (void 0); | |
}, | |
getEndIndex: function(h) { | |
var i = this.getAvailableRange(h); | |
return i.offset + i.length - 1; | |
}, | |
getCursorByIndexImmediate: function(h, i) { | |
var j = this.getByIndexImmediate(h, i); | |
if (j) return this._photoCache[h].getCursorForID(j.id); | |
return (void 0); | |
}, | |
hasNextPage: function(h) { | |
var i = this.getCursorByIndexImmediate(h, this.getEndIndex(h)); | |
return this.getPhotoCache(h).hasNextPage(i); | |
}, | |
getAvailableRange: function(h) { | |
return this.getPhotoCache(h).getAvailableRange(); | |
}, | |
hasLooped: function(h) { | |
return this.getPhotoCache(h).hasLooped(); | |
}, | |
fetchForward: function(h, i, j, k) { | |
this.getPhotoCache(h).getItemsAfterCursor(i, j, k); | |
}, | |
fetchBackward: function(h, i, j, k) { | |
this.getPhotoCache(h).getItemsBeforeCursor(i, j, k); | |
}, | |
executePostCreate: function(h, i) { | |
if (this._photoCache[h]) { | |
i && i(); | |
} else this._postCreateCallbacks[h] = i; | |
}, | |
runPostCreateCallback: function(h) { | |
var i = this._postCreateCallbacks[h]; | |
if (i) { | |
i(); | |
delete this._postCreateCallbacks[h]; | |
} | |
}, | |
setPreFetchCallback: function(h, i) { | |
this.getPhotoCache(h).setPreFetchCallback(i); | |
}, | |
updateData: function(h) { | |
var i = h.set_id; | |
if (!this._photoCache[i]) { | |
this._photoCache[i] = new h.cache_class(h); | |
this.runPostCreateCallback(i); | |
} else if (h.query_metadata.action == g.actions.UPDATE) { | |
this._photoCache[i].updateData(h); | |
} else this._photoCache[i].addData(h); | |
}, | |
updateFeedbackData: function(h) { | |
var i = Object.keys(h); | |
i.forEach(function(j) { | |
return g.getAllByIDImmediate(j).forEach(function(k) { | |
k.feedback = h[j].feedback; | |
}); | |
}); | |
}, | |
reset: function() { | |
Object.keys(this._photoCache).forEach(function(h) { | |
return this.clearSetCache(h); | |
}.bind(this)); | |
} | |
}; | |
e.exports = g; | |
}, null); | |
__d("WaterfallIDGenerator", ["CurrentUser", "md5"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
function i() { | |
var l = 2147483647; | |
return Math.random() * l; | |
} | |
function j() { | |
return Math.floor(Date.now() / 1000); | |
} | |
var k = { | |
generate: function() { | |
return h([g.getID(), j(), i()].join(':')); | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("MessengerButton.react", ["ReactComponentWithPureRenderMixin", "React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = h, | |
l = k.PropTypes, | |
m = h.createClass({ | |
displayName: "MessengerButton", | |
mixins: [g], | |
propTypes: { | |
label: l.string.isRequired, | |
type: l.oneOf(['primary', 'secondary']).isRequired, | |
use: l.oneOf(['default', 'danger']).isRequired | |
}, | |
getDefaultProps: function() { | |
return { | |
use: 'default' | |
}; | |
}, | |
handleLinkClick: function(n) { | |
if (this.props.disabled) { | |
n.preventDefault(); | |
} else if (this.props.onClick) this.props.onClick(n); | |
}, | |
render: function() { | |
var n = this.props, | |
o = n.className, | |
p = n.label, | |
q = (function(r, s) { | |
var t = {}, | |
u = Object.prototype.hasOwnProperty; | |
if (r == null) throw new TypeError(); | |
for (var v in r) | |
if (u.call(r, v) && !u.call(s, v)) t[v] = r[v]; | |
return t; | |
})(n, { | |
className: 1, | |
label: 1 | |
}); | |
return (h.createElement("a", h.__spread({ | |
className: j((("_3quh") + (' ' + "_30yy") + (this.props.type === 'primary' ? ' ' + "_2t_" : '') + (this.props.type === 'secondary' ? ' ' + "_2u0" : '') + (this.props.use === 'danger' ? ' ' + "_3ay_" : '') + (this.props.disabled ? ' ' + "_4zab" : '')), o), | |
href: "#" | |
}, q, { | |
onClick: this.handleLinkClick | |
}), p)); | |
} | |
}); | |
e.exports = m; | |
}, null); | |
__d("MessengerStateProcessor", ["MercuryAPIArgsSource", "MercuryIDs", "MercuryParticipantTypes", "MercuryParticipants", "MercuryThreadIDMap", "MercuryThreads", "MercuryVanityIDMap", "MessengerURIConstants"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var o = { | |
preprocess: function(q) { | |
var r = q.activeThreadID; | |
if (r) { | |
var s = h.getUserIDFromThreadID(r), | |
t = s && j.getNow(h.getParticipantIDFromUserID(s)); | |
if (t && t.type !== i.EVENT) { | |
q.threadKey = t.vanity || s; | |
} else if (s && !t) { | |
var u = h.getParticipantIDFromUserID(s); | |
q.threadKey = m.hasID(u) ? m.getVanity(u) : s; | |
} else { | |
var v = k.get(), | |
w = v.getFBIDFromClientIDNow(r); | |
q.threadKey = w || r; | |
} | |
} | |
delete q.activeThreadID; | |
return q; | |
}, | |
postprocess: function(q) { | |
var r = k.get(), | |
s = l.get(), | |
t = p(q.threadKey), | |
u; | |
u = h.isValid(t) ? t : r.getClientIDFromFBIDNow(t); | |
if (!u) { | |
var v = j.getIDFromVanityOrFBID(t), | |
w = v && s.getCanonicalThreadToParticipant(v, null, g.MESSENGER); | |
if (w) u = w.thread_id; | |
} | |
if (u) { | |
q.activeThreadID = u; | |
q.serverThreadID = r.getFBIDFromClientIDNow(u); | |
} | |
delete q.threadKey; | |
return q; | |
} | |
}; | |
function p(q) { | |
if (!q) return null; | |
return q.startsWith(n.GROUP_PREFIX) ? q.substr(n.GROUP_PREFIX.length) : q; | |
} | |
e.exports = o; | |
}, null); | |
__d("NotificationSettingsDialog", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
show: function(h) { | |
d(['MercuryThreadActions'], function(i) { | |
i.get().openNotificationSettings(h); | |
}); | |
} | |
}; | |
e.exports = g; | |
}, null); | |
__d("MercuryShareAttachmentReactShape", ["React"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g, | |
i = h.PropTypes, | |
j = i.shape({ | |
share_id: i.string, | |
description: i.string, | |
media: i.shape({ | |
image: i.string, | |
image_size: i.shape({ | |
height: i.number, | |
width: i.number | |
}), | |
duration: i.number, | |
playable: i.bool, | |
source: i.string | |
}), | |
source: i.string, | |
style_list: i.arrayOf(i.string), | |
subattachments: i.array, | |
target: i.object, | |
title: i.string, | |
properties: i.object, | |
uri: i.string | |
}).isRequired; | |
e.exports = j; | |
}, null); | |
__d("EmoticonUtils", ["EmoticonsList", "Parent"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = 'emoticon_', | |
j = g.symbols, | |
k = { | |
getEmoteFromTarget: function(l) { | |
var m = h.byClass(l, 'emoticon'); | |
if (!m) return null; | |
var n = null; | |
m.className.split(' ').forEach(function(o) { | |
if (o.startsWith(i)) n = o.substring(i.length); | |
}); | |
return j[n] || null; | |
}, | |
insertEmoticon: function(l, m, n) { | |
var o = m.substring(0, n.start), | |
p = m.substring(n.end); | |
if (n.start > 0 && !o.endsWith(' ')) l = ' ' + l; | |
if (!p.startsWith(' ')) l += ' '; | |
var q = o + l + p; | |
n.start += l.length; | |
n.end = n.start; | |
return { | |
result: q, | |
start: n.start, | |
end: n.end | |
}; | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("URLScraper", ["ArbiterMixin", "DataStore", "Event", "URLMatcher", "mixin"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = 'scraperLastPermissiveMatch', | |
m = k(g); | |
for (var n in m) | |
if (m.hasOwnProperty(n)) p[n] = m[n]; | |
var o = m === null ? null : m.prototype; | |
p.prototype = Object.create(o); | |
p.prototype.constructor = p; | |
p.__superConstructor__ = m; | |
function p(q, r) { | |
"use strict"; | |
m.call(this); | |
this.input = q; | |
this.enable(); | |
this.getValueFn = r; | |
} | |
p.prototype.reset = function() { | |
"use strict"; | |
h.set(this.input, l, null); | |
}; | |
p.prototype.enable = function() { | |
"use strict"; | |
if (this.events) return; | |
var q = function(r) { | |
setTimeout(this.check.bind(this, r), 30); | |
}; | |
this.events = i.listen(this.input, { | |
paste: q.bind(this, false), | |
keydown: q.bind(this, true) | |
}); | |
}; | |
p.prototype.disable = function() { | |
"use strict"; | |
if (!this.events) return; | |
for (var event in this.events) this.events[event].remove(); | |
this.events = null; | |
}; | |
p.prototype.check = function(q) { | |
"use strict"; | |
var r = this.getValueFn ? this.getValueFn() : this.input.value; | |
if (q && p.trigger(r)) return; | |
var s = p.match(r), | |
t = j.permissiveMatch(r); | |
if (t && (t != h.get(this.input, l))) { | |
h.set(this.input, l, t); | |
this.inform('match', { | |
url: s || t, | |
alt_url: t | |
}); | |
} | |
}; | |
Object.assign(p, j); | |
e.exports = p; | |
}, null); | |
__d("XOfferSetNotificationsController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/offers\/v2\/notifications\/", { | |
offer: { | |
type: "Int", | |
required: true | |
}, | |
enable: { | |
type: "Bool", | |
defaultValue: false | |
} | |
}); | |
}, null); | |
__d("XOfferSendPlatformNotificationController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/offers\/v2\/send_platform_notification\/", {}); | |
}, null); | |
__d("OffersUtil", ["DOM", "DOMQuery", "CSS", "Event", "AsyncRequest", "XOfferSetNotificationsController", "XOfferSendPlatformNotificationController"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = { | |
attachHideShowClickListener: function(o, p, q) { | |
j.listen(o, 'click', function() { | |
var r = h.scry(h.getRootElement(), p), | |
s = h.scry(h.getRootElement(), q); | |
for (var t = 0; t < r.length; t++) i.hide(r[t]); | |
for (var u = 0; u < s.length; u++) i.show(s[u]); | |
}); | |
}, | |
registerRedirectAfter: function(o, p) { | |
setTimeout(function() { | |
window.location.href = o; | |
}, p); | |
}, | |
attachDeletelLinkClickListener: function(o, p, q, r, s) { | |
j.listen(o, 'click', function() { | |
new k().setURI(q).setHandler(function(t) { | |
var u = t.getPayload(); | |
if (u) { | |
p.className = r; | |
} else p.className = s; | |
}).send(); | |
}); | |
}, | |
listen: function(o, p) { | |
j.listen(o, 'click', p.show.bind(p)); | |
}, | |
showRegistered: function(o, p) { | |
j.listen(o, 'click', function() { | |
p.show(); | |
}); | |
}, | |
logGoToWebsiteClick: function(o, p) { | |
j.listen(o, 'click', function() { | |
new k().setURI(p).send(); | |
}); | |
}, | |
sendPlatformNotification: function() { | |
var o = m.getURIBuilder().getURI(); | |
new k().setURI(o).send(); | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("PhotoStore", ["Arbiter", "PhotoStoreCore"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
g.subscribe('update-photos', function(i, j) { | |
h.updateData(j); | |
}); | |
e.exports = h; | |
}, null); | |
__d("SyncRequestNotificationBeeperItemContents.react", ["Animation", "CloseButton.react", "ImageBlock.react", "NotificationUserActions", "React", "SyncRequest.react", "SyncRequestStatusEnum", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
var o = k.createClass({ | |
displayName: "SyncRequestNotificationBeeperItemContents", | |
_markAsRead: function() { | |
j.markNotificationsAsRead([this.props.beep.notificationID]); | |
this.props.onHide(); | |
}, | |
_onClose: function() { | |
this._markAsRead(); | |
this.props.onHide(); | |
}, | |
_doFlash: function() { | |
new g(k.findDOMNode(this.refs.inner)).from('opacity', '0').to('opacity', '1').duration(200).go(); | |
}, | |
componentDidMount: function() { | |
if (this.props.beep.rendererData.status != m.PENDING) this.props.onReadyToHide(this.props.beep.notificationID); | |
}, | |
componentDidUpdate: function(p) { | |
if (this.props.beep.rendererData.status != m.PENDING && p.beep.rendererData.status == m.PENDING) this.props.onReadyToHide(this.props.beep.notificationID); | |
}, | |
onRequestStatusUpdate: function(p, q) { | |
if (p != m.PENDING && q == m.PENDING) this.props.onReadyToHide(this.props.beep.notificationID); | |
}, | |
render: function() { | |
var p = this.props.beep, | |
q = p.rendererData; | |
return (k.createElement("div", { | |
ref: "inner" | |
}, k.createElement(h, { | |
className: "_3soc", | |
onClick: this._onClose, | |
size: "medium" | |
}), k.createElement(i, { | |
className: "_3soj" | |
}, k.createElement("img", { | |
src: p.actors[0].profile_picture.uri, | |
className: "_3sok" | |
}), k.createElement("div", { | |
className: "_3sol" | |
}, k.createElement(l, { | |
app: q.app, | |
creationTime: q.creation_time, | |
requestId: q.id.toString(), | |
receiver: q.receiver, | |
sender: q.sender, | |
status: q.status, | |
timeout: q.timeout, | |
timeRemaining: q.time_remaining, | |
viewerId: q.receiver.id, | |
onStatusUpdate: this.onRequestStatusUpdate | |
}))))); | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("LiveMessageReceiver", ["Arbiter", "ChannelConstants", "emptyFunction", "shield"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
function k(l) { | |
this.eventName = l; | |
this.subs = null; | |
this.handler = i; | |
this.shutdownHandler = null; | |
this.registered = false; | |
this.appId = 1; | |
} | |
Object.assign(k, { | |
getAppMessageType: function(l, m) { | |
return 'live_message/' + l + ':' + m; | |
}, | |
route: function(l) { | |
var m = function(n) { | |
var o = k.getAppMessageType(l.app_id, l.event_name); | |
g.inform(o, n, g.BEHAVIOR_PERSISTENT); | |
}; | |
m(l.response); | |
} | |
}); | |
Object.assign(k.prototype, { | |
setAppId: function(l) { | |
this.appId = l; | |
return this; | |
}, | |
setHandler: function(l) { | |
this.handler = l; | |
this._dirty(); | |
return this; | |
}, | |
setRestartHandler: i, | |
setShutdownHandler: function(l) { | |
this.shutdownHandler = j(l); | |
this._dirty(); | |
return this; | |
}, | |
_dirty: function() { | |
if (this.registered) { | |
this.unregister(); | |
this.register(); | |
} | |
}, | |
register: function() { | |
var l = function(n, o) { | |
return this.handler(o); | |
}.bind(this), | |
m = k.getAppMessageType(this.appId, this.eventName); | |
this.subs = {}; | |
this.subs.main = g.subscribe(m, l); | |
if (this.shutdownHandler) this.subs.shut = g.subscribe(h.ON_SHUTDOWN, this.shutdownHandler); | |
this.registered = true; | |
return this; | |
}, | |
unregister: function() { | |
if (!this.subs) return this; | |
for (var l in this.subs) | |
if (this.subs[l]) this.subs[l].unsubscribe(); | |
this.subs = null; | |
this.registered = false; | |
return this; | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("initLiveMessageReceiver", ["Arbiter", "ChannelConstants", "LiveMessageReceiver"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
g.subscribe(h.getArbiterType('app_msg'), function(j, k) { | |
i.route(k.obj); | |
}); | |
}, null); | |
__d("ClearableTypeahead", ["Event"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
resetOnCloseButtonClick: function(i, j) { | |
g.listen(j, 'click', function() { | |
var k = i.getCore(); | |
k.getElement().focus(); | |
k.reset(); | |
}); | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("ContextualLayerAutoFlipHorizontal", ["ContextualLayerAutoFlip"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
for (var h in g) | |
if (g.hasOwnProperty(h)) j[h] = g[h]; | |
var i = g === null ? null : g.prototype; | |
j.prototype = Object.create(i); | |
j.prototype.constructor = j; | |
j.__superConstructor__ = g; | |
function j() { | |
"use strict"; | |
if (g !== null) g.apply(this, arguments); | |
} | |
j.prototype.getValidPositions = function(k) { | |
"use strict"; | |
return [k.getPosition()]; | |
}; | |
e.exports = j; | |
}, null); | |
__d("DialogFitHeight", ["AbstractDialogFitHeight"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
for (var h in g) | |
if (g.hasOwnProperty(h)) j[h] = g[h]; | |
var i = g === null ? null : g.prototype; | |
j.prototype = Object.create(i); | |
j.prototype.constructor = j; | |
j.__superConstructor__ = g; | |
function j() { | |
"use strict"; | |
if (g !== null) g.apply(this, arguments); | |
} | |
j.prototype.getHeightProperty = function() { | |
"use strict"; | |
return 'height'; | |
}; | |
e.exports = j; | |
}, null); |
/*!CK:2712167347!*/ /*1438697687,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["xOlRU"]); | |
} | |
__d("ComposerTargetType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
SELF_USER: "feed", | |
OTHER_USER: "wall", | |
GROUP: "group", | |
PAGE: "page", | |
EVENT: "event", | |
RECOMMENDATION: "recommendation", | |
EXAMPLE: "example" | |
}; | |
}, null); | |
__d("ComposerType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
INLINE: "inline", | |
ADVANCED: "advanced", | |
NORMAL: "normal" | |
}; | |
}, null); | |
__d("ComposerWaterfallEvent", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
COMPOSER_CANCEL: "composer_cancel", | |
COMPOSER_CANCEL_INTENT: "intent_composer_cancel", | |
COMPOSER_ENTRY: "composer_entry", | |
COMPOSER_NOT_RENDERED: "composer_not_renderer", | |
COMPOSER_POST: "composer_post", | |
COMPOSER_POST_CANCEL: "composer_post_cancel", | |
COMPOSER_POST_FAILURE: "composer_post_failure", | |
COMPOSER_POST_FAILURE_FATAL: "composer_post_fatal_failure", | |
COMPOSER_POST_FAILURE_GIVEUP: "composer_post_giveup_failure", | |
COMPOSER_POST_SUCCESS: "composer_post_success", | |
COMPOSER_POST_COMPLETED: "composer_post_completed", | |
COMPOSER_WRITTEN: "composer_written", | |
ALBUM_ADD: "add_album", | |
ALBUM_CANCEL: "cancel_album", | |
ALBUM_INTENT: "intent_album", | |
ALBUM_REMOVE: "remove_album", | |
FRIEND_TAG_ADD: "add_friend_tag", | |
FRIEND_TAG_CANCEL: "cancel_friend_tag", | |
FRIEND_TAG_INTENT: "intent_friend_tag", | |
FRIEND_TAG_REMOVE: "remove_friend_tag", | |
FRIEND_TAG_SEARCH: "search_friend_tag", | |
FRIEND_SHOW_MORE: "show_more_friend_tag", | |
LOCATION_ADD: "add_location", | |
LOCATION_CANCEL: "cancel_location", | |
LOCATION_INTENT: "intent_location", | |
LOCATION_REMOVE: "remove_location", | |
LOCATION_SCROLL: "scroll_location", | |
LOCATION_SEARCH: "search_location", | |
EMBEDS_ADD: "add_embed", | |
EMBEDS_CANCEL: "cancel_embed", | |
EMBEDS_INTENT: "intent_embed", | |
MINUTIAE_ADD: "add_minutiae", | |
MINUTIAE_CANCEL: "cancel_minutiae", | |
MINUTIAE_CHANGE_ICON: "change_icon_minutiae", | |
MINUTIAE_CHANGE_ICON_CANCEL: "change_icon_cancel_minutiae", | |
MINUTIAE_CHANGE_ICON_INTENT: "change_icon_intent_minutiae", | |
MINUTIAE_INTENT: "intent_minutiae", | |
MINUTIAE_REMOVE: "remove_minutiae", | |
MINUTIAE_SCROLL: "scroll_minutiae", | |
MINUTIAE_SEARCH: "search_minutiae", | |
MINUTIAE_TYPE_CLICK: "type_click_minutiae", | |
MINUTIAE_SEE_MORE: "see_more_minutiae", | |
MINUTIAE_CHAIN_SKIP: "skip_chain_minutiae", | |
MINUTIAE_CHAIN_SUGGEST: "suggest_chain_minutiae", | |
MINUTIAE_ICONPICKER_QUERY: "minutiae_iconpicker_query", | |
MINUTIAE_ICONPICKER_BOOTSTRAP: "minutiae_iconpicker_bootstrap", | |
MINUTIAE_ICONPICKER_SELECT: "minutiae_iconpicker_select", | |
MEDIA_INTENT: "intent_media", | |
MEDIA_CANCEL: "cancel_media", | |
PHOTO_ADD: "add_photo", | |
PHOTO_ADD_FAILURE: "add_photo_failure", | |
PHOTO_ADD_SUCCESS: "add_photo_success", | |
PHOTO_REMOVE: "remove_photo", | |
PRIVACY_ADD: "add_privacy", | |
PRIVACY_CANCEL: "cancel_privacy", | |
PRIVACY_INTENT: "intent_privacy", | |
PRIVACY_SCROLL: "scroll_privacy", | |
PRIVACY_SEE_ALL_LISTS: "see_all_lists_privacy", | |
SELECT_FRIEND_TIMELINE_INTENT: "intent_select_friend_timeline", | |
SELECT_FRIEND_TIMELINE_ADD: "add_select_friend_timeline", | |
SELECT_FRIEND_TIMELINE_CANCEL: "cancel_select_friend_timeline", | |
SERVER_POST_BEGIN: "server_composer_post_begin", | |
SERVER_POST_FAILURE: "server_composer_post_failure", | |
SERVER_POST_SUCCESS: "server_composer_post_succeeded", | |
POST_POST_WITH_TAG_BEGIN: "post_post_with_tag_begin", | |
POST_POST_WITH_TAG_FAILURE: "post_post_with_tag_failure", | |
POST_POST_WITH_TAG_SUCCESS: "post_post_with_tag_success", | |
TARGET_SELECTOR_INTENT: "intent_target_selector", | |
TARGET_SELECTOR_CANCEL: "cancel_target_selector", | |
VIDEO_ADD: "add_video", | |
VIDEO_ADD_FAILURE: "add_video_failure", | |
VIDEO_ADD_SUCCESS: "add_video_success", | |
VIDEO_REMOVE: "remove_video" | |
}; | |
}, null); | |
__d("ReactComposerConstants", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
ID_PREFIX: "rc.", | |
GK_VIDEO_COPYRIGHT: "video_copyright_confirmation_dialog", | |
GK_MULTILINGUAL_COMPOSER: "multilingual_composer_www" | |
}; | |
}, null); | |
__d("Cache", ["DateConsts", "Map", "TreeMap"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j() { | |
this.$Cache0 = new h(); | |
} | |
j.prototype.has = function(k) { | |
return this.$Cache0.has(k); | |
}; | |
j.prototype.get = function(k, l) { | |
var m = this.__getRaw(k); | |
if (!m) return l; | |
return m.$Cache1; | |
}; | |
j.prototype.getAll = function(k, l) { | |
var m = new h(); | |
k.forEach(function(n) { | |
return m.set(n, this.get(n, l)); | |
}.bind(this)); | |
return m; | |
}; | |
j.prototype["delete"] = function(k) { | |
var l = this.__getRaw(k); | |
if (l && l.$Cache2) clearTimeout(l.$Cache2); | |
return this.$Cache0["delete"](k); | |
}; | |
j.prototype.clear = function() { | |
this.$Cache0.forEach(function(k) { | |
if (k && k.$Cache2) clearTimeout(k.$Cache2); | |
}); | |
this.$Cache0.clear(); | |
}; | |
j.prototype.set = function(k, l, m, n) { | |
if (!this.shouldUpdate(k, m)) return false; | |
var o = this.__getRaw(k); | |
if (!o) o = this.__getNewRawObject(); | |
delete o.$Cache1; | |
delete o.$Cache3; | |
if (o.$Cache2) clearTimeout(o.$Cache2); | |
delete o.$Cache2; | |
o.$Cache1 = l; | |
if (m != null) o.$Cache3 = m; | |
if (n != null && n >= 0) o.$Cache2 = setTimeout(this["delete"].bind(this, k), n * g.MS_PER_SEC * g.SEC_PER_MIN); | |
this.__setRaw(k, o); | |
return true; | |
}; | |
j.prototype.shouldUpdate = function(k, l) { | |
var m = this.__getRaw(k); | |
return (m == null || m.$Cache3 == null || l == null || l > m.$Cache3); | |
}; | |
j.prototype.size = function() { | |
return this.$Cache0.size; | |
}; | |
j.prototype.__getRaw = function(k) { | |
return this.$Cache0.get(k); | |
}; | |
j.prototype.__setRaw = function(k, l) { | |
this.$Cache0.set(k, l); | |
}; | |
j.prototype.__getNewRawObject = function() { | |
return { | |
$Cache1: null, | |
$Cache2: null, | |
$Cache3: null, | |
$Cache4: null, | |
$Cache5: null | |
}; | |
}; | |
j.prototype.__keys = function() { | |
return this.$Cache0.keys(); | |
}; | |
e.exports = j; | |
}, null); | |
__d("getDOMImageSize", ["URI"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(m) { | |
m.onload = null; | |
m.onerror = null; | |
m.onreadystatechange = null; | |
m._callback = null; | |
m._thisObj = null; | |
m._srcStr = null; | |
m.parentNode && m.parentNode.removeChild(m); | |
} | |
function i() { | |
var m = this; | |
if (m._callback) m._callback.call(m._thisObj, m.naturalWidth || m.width, m.naturalHeight || m.height, m._srcStr); | |
h(m); | |
} | |
function j() { | |
var m = this; | |
if (m.readyState === 'complete') i.call(m); | |
} | |
function k() { | |
var m = this; | |
if (m._callback) m._callback.call(m._thisObj, 0, 0, m._srcStr); | |
h(m); | |
} | |
function l(m, n, o) { | |
o = o || null; | |
if (!m) { | |
n.call(o, 0, 0, ''); | |
return; | |
} | |
var p = document.body; | |
if (!p) { | |
setTimeout(l.bind(this, m, n, o), 500); | |
return; | |
} | |
var q; | |
if (typeof m === 'string') { | |
q = m; | |
} else if (typeof m === 'object') | |
if (typeof m.width === 'number' && typeof m.height === 'number') { | |
if (typeof m.src === 'string') { | |
q = m.src; | |
if (m.naturalWidth && m.naturalHeight) { | |
n.call(o, m.naturalWidth, m.naturalHeight, q); | |
return; | |
} | |
} | |
if (typeof m.uri === 'string') { | |
q = m.uri; | |
if (m.width && m.height) { | |
n.call(o, m.width, m.height, q); | |
return; | |
} | |
} | |
} else if (m instanceof g) q = m.toString(); | |
if (!q) { | |
n(0, 0, m); | |
return; | |
} | |
var r = document.createElement('img'); | |
r.onreadystatechange = j; | |
r.onload = i; | |
r.onerror = k; | |
r._callback = n; | |
r._thisObj = o; | |
r._srcStr = q; | |
r.src = q; | |
r.style.cssText = 'position:absolute;left:0;top:0;width:auto;height:auto;clip:rect(0 0 0 0);'; | |
p.insertBefore(r, p.firstChild); | |
} | |
e.exports = l; | |
}, null); | |
__d("CachedDOMImageSizePool", ["debounce", "getDOMImageSize"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
function i(j, k) { | |
"use strict"; | |
this.$CachedDOMImageSizePool0 = {}; | |
this.$CachedDOMImageSizePool1 = k; | |
this.$CachedDOMImageSizePool2 = 0; | |
this.$CachedDOMImageSizePool3 = j; | |
this.$CachedDOMImageSizePool4 = g(this.$CachedDOMImageSizePool5, 5000, this); | |
this.$CachedDOMImageSizePool6 = {}; | |
this.$CachedDOMImageSizePool7 = {}; | |
} | |
i.prototype.get = function(j, k, l) { | |
"use strict"; | |
if (!j) { | |
k.call(l, 0, 0, j); | |
return; | |
} | |
var m = this.$CachedDOMImageSizePool0[j]; | |
if (m) { | |
m.lastAccessTime = Date.now(); | |
k.call(l, m.width, m.height, m.src); | |
} else if (this.$CachedDOMImageSizePool6[j]) { | |
this.$CachedDOMImageSizePool6[j].push(k); | |
this.$CachedDOMImageSizePool7[j].push(l); | |
} else { | |
this.$CachedDOMImageSizePool6[j] = [k]; | |
this.$CachedDOMImageSizePool7[j] = [l]; | |
h(j, this.$CachedDOMImageSizePool8, this); | |
} | |
}; | |
i.prototype.set = function(j, k, l) { | |
"use strict"; | |
if (this.$CachedDOMImageSizePool2 > this.$CachedDOMImageSizePool3) this.$CachedDOMImageSizePool4(); | |
var m = this.$CachedDOMImageSizePool0; | |
if (j && !m[j]) { | |
var n = { | |
width: k, | |
height: l, | |
src: j, | |
lastAccessTime: Date.now() | |
}; | |
m[j] = n; | |
this.$CachedDOMImageSizePool2++; | |
} | |
}; | |
i.prototype.$CachedDOMImageSizePool8 = function(j, k, l) { | |
"use strict"; | |
this.set(l, j, k); | |
var m = this.$CachedDOMImageSizePool6[l], | |
n = this.$CachedDOMImageSizePool7[l]; | |
for (var o = 0, p = m.length; o < p; o++) m[o].call(n[o], j, k, l); | |
delete this.$CachedDOMImageSizePool6[l]; | |
delete this.$CachedDOMImageSizePool7[l]; | |
}; | |
i.prototype.$CachedDOMImageSizePool5 = function() { | |
"use strict"; | |
var j = Date.now(), | |
k = this.$CachedDOMImageSizePool0, | |
l = this.$CachedDOMImageSizePool2, | |
m = this.$CachedDOMImageSizePool1; | |
for (var n in k) { | |
var o = k[n]; | |
if ((j - o.lastAccessTime) > m) { | |
delete k[n]; | |
l--; | |
} | |
} | |
this.$CachedDOMImageSizePool2 = l; | |
}; | |
e.exports = i; | |
}, null); | |
__d("BackgroundImage.react", ["CachedDOMImageSizePool", "React", "XUISpinner.react", "cx", "invariant", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = h, | |
n = m.PropTypes, | |
o = '(-?(\\d+\\.)?\\d+(px|\\%))', | |
p = new RegExp('^' + o + '?(\\s' + o + ')?$', 'g'), | |
q = new g(50, 10 * 60 * 1000), | |
r = h.createClass({ | |
displayName: "BackgroundImage", | |
propTypes: { | |
src: n.string, | |
width: n.number.isRequired, | |
height: n.number.isRequired, | |
backgroundSize: n.oneOf(['contain', 'cover', 'containinside', 'coverinside']), | |
loadingIndicatorStyle: n.oneOf(['none', 'large', 'small']), | |
backgroundPosition: function(s, t, u) { | |
var v = s[t]; | |
if (v) { | |
k(typeof v === 'string'); | |
k(v.match(p)); | |
} | |
}, | |
onImageLoad: n.func, | |
optimizeResizeSpeed: n.bool, | |
onContextMenu: n.func | |
}, | |
getInitialState: function() { | |
return { | |
imageWidth: null, | |
imageHeight: null, | |
imageSrc: this.props.src, | |
loading: true | |
}; | |
}, | |
getDefaultProps: function() { | |
return { | |
optimizeResizeSpeed: false, | |
loadingIndicatorStyle: 'none' | |
}; | |
}, | |
componentDidMount: function() { | |
this._resolveImageSize(); | |
}, | |
componentDidUpdate: function(s) { | |
if (this.props.src !== this.state.imageSrc) this.setState({ | |
imageWidth: 0, | |
imageHeight: 0, | |
imageSrc: this.props.src, | |
loading: true | |
}, this._resolveImageSize); | |
}, | |
_resolveImageSize: function() { | |
var s = this.state.imageSrc; | |
if (s) q.get(s, this._onImageSizeResolved, this); | |
}, | |
render: function() { | |
var s = { | |
width: this.props.width + 'px', | |
height: this.props.height + 'px' | |
}, | |
t = l(this.props.className, "_5f0d"); | |
return (h.createElement("div", h.__spread({}, this.props, { | |
className: l(this.props.className, t), | |
style: Object.assign({}, (this.props.style || {}), s), | |
onContextMenu: this.props.onContextMenu | |
}), this._renderImage(), this._renderContent(), this._renderLoadingIndicator())); | |
}, | |
_renderLoadingIndicator: function() { | |
if (!this.state.loading || this.props.loadingIndicatorStyle === 'none') return null; | |
return (h.createElement("div", { | |
className: "_1qe- _5lar" | |
}, h.createElement("div", { | |
className: "_1qe_" | |
}, h.createElement("div", { | |
className: "_1qf0" | |
}, h.createElement(i, { | |
size: this.props.loadingIndicatorStyle | |
}))))); | |
}, | |
_renderContent: function() { | |
if (this.props.children) return (h.createElement("div", { | |
className: "_1qe-" | |
}, h.createElement("div", { | |
className: "_1qe_" | |
}, h.createElement("div", { | |
className: "_1qf0" | |
}, this.props.children)))); | |
}, | |
_renderImage: function() { | |
if (!this.state.imageWidth || !this.state.imageHeight) return; | |
var s = this.props.width, | |
t = this.props.height, | |
u, v; | |
switch (this.props.backgroundSize) { | |
case 'cover': | |
u = 'cover'; | |
v = false; | |
break; | |
case 'coverinside': | |
u = 'cover'; | |
v = true; | |
break; | |
case 'contain': | |
u = 'contain'; | |
v = false; | |
break; | |
case 'containinside': | |
u = 'contain'; | |
v = true; | |
} | |
var w = this.state.imageWidth, | |
x = this.state.imageHeight, | |
y = s / t, | |
z = w / x; | |
if (u === 'contain') | |
if ((w > s || !v) && z >= y) { | |
w = s; | |
x = w / z; | |
} else if (x > t || !v) { | |
x = t; | |
w = x * z; | |
} | |
if (u === 'cover') | |
if ((w > s || !v) && z >= y) { | |
x = t; | |
w = x * z; | |
} else if (x > t || !v) { | |
w = s; | |
x = w / z; | |
} | |
var aa = this._getImageStyle(w, x); | |
return (h.createElement("img", { | |
alt: "", | |
className: (("_5i4g") + (this.props.optimizeResizeSpeed ? ' ' + "_5sjv" : '')), | |
style: aa, | |
src: this.state.imageSrc | |
})); | |
}, | |
_getImageStyle: function(s, t) { | |
var u; | |
if (this.props.backgroundPosition) { | |
u = this.props.backgroundPosition.split(' '); | |
} else u = ['50%', '50%']; | |
return { | |
width: Math.round(s) + 'px', | |
height: Math.round(t) + 'px', | |
left: this._getBackgroundPositionPxValue('left', u[0], s, t), | |
top: this._getBackgroundPositionPxValue('top', u[1] || u[0], s, t) | |
}; | |
}, | |
_getBackgroundPositionPxValue: function(s, t, u, v) { | |
var w = parseFloat(t), | |
x = t.substr(w.toString().length); | |
if (x === 'px') return t; | |
if (s === 'left') { | |
return Math.round((this.props.width - u) * (w / 100)) + 'px'; | |
} else return Math.round((this.props.height - v) * (w / 100)) + 'px'; | |
}, | |
_onImageSizeResolved: function(s, t, u) { | |
if (!this.isMounted() || this.state.imageSrc !== u) return; | |
var v = this.props.onImageLoad ? this.props.onImageLoad.bind(null, s, t) : null; | |
this.setState({ | |
imageWidth: s, | |
imageHeight: t, | |
loading: false | |
}, v); | |
} | |
}); | |
e.exports = r; | |
}, null); | |
__d("TooltipMixin", ["React", "TooltipData", "DOM"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes; | |
function l(n) { | |
var o = n.tooltip; | |
return o != null && typeof o !== 'string'; | |
} | |
var m = { | |
propTypes: { | |
tooltip: k.oneOfType([k.element, k.string]), | |
position: k.oneOf(['above', 'below', 'left', 'right']), | |
alignH: k.oneOf(['left', 'center', 'right']) | |
}, | |
getInitialState: function() { | |
return { | |
tooltipContainer: l(this.props) ? i.create('div') : null | |
}; | |
}, | |
componentWillReceiveProps: function(n) { | |
var o = l(n), | |
p = this.state.tooltipContainer; | |
if (p && !o) { | |
this.setState({ | |
tooltipContainer: null | |
}); | |
} else if (!p && o) this.setState({ | |
tooltipContainer: i.create('div') | |
}); | |
}, | |
componentDidMount: function() { | |
this._updateTooltip(); | |
}, | |
componentDidUpdate: function(n, o) { | |
if (o.tooltipContainer && !this.state.tooltipContainer) this._cleanupContainer(o.tooltipContainer); | |
this._updateTooltip(); | |
}, | |
_updateTooltip: function() { | |
var n; | |
if (l(this.props)) { | |
n = this.state.tooltipContainer; | |
g.render(this.props.tooltip, n); | |
} else n = this.props.tooltip; | |
if (n != null) { | |
h.set(g.findDOMNode(this), n, this.props.position, this.props.alignH); | |
} else h.remove(g.findDOMNode(this)); | |
}, | |
componentWillUnmount: function() { | |
if (this.state.tooltipContainer) this._cleanupContainer(this.state.tooltipContainer); | |
h.remove(g.findDOMNode(this)); | |
}, | |
_cleanupContainer: function(n) { | |
g.unmountComponentAtNode(n); | |
} | |
}; | |
e.exports = m; | |
}, null); | |
__d("TooltipLink.react", ["React", "TooltipMixin"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g.createClass({ | |
displayName: "TooltipLink", | |
mixins: [h], | |
render: function() { | |
return g.createElement("a", g.__spread({}, this.props), this.props.children); | |
} | |
}); | |
e.exports = i; | |
}, null); | |
__d("XUIBlock", ["React", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g, | |
j = i.PropTypes, | |
k = { | |
propTypes: { | |
background: j.oneOf(['base-wash', 'light-wash', 'white', 'highlight', 'transparent']) | |
}, | |
getDefaultProps: function() { | |
return { | |
background: 'transparent' | |
}; | |
}, | |
getBackgroundClass: function(l) { | |
var m = ((l.background === 'base-wash' ? "_4-u5" : '') + (l.background === 'light-wash' ? ' ' + "_57d8" : '') + (l.background === 'white' ? ' ' + "_4-u8" : '') + (l.background === 'highlight' ? ' ' + "_4-u7" : '')); | |
return m; | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("XUICard.react", ["React", "XUIBlock", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = g.createClass({ | |
displayName: "XUICard", | |
propTypes: h.propTypes, | |
getDefaultProps: function() { | |
return Object.assign({}, h.getDefaultProps(), { | |
background: 'white' | |
}); | |
}, | |
render: function() { | |
var l = j("_4-u2", h.getBackgroundClass(this.props)); | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: j(this.props.className, l) | |
}), this.props.children)); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("XUICardSection.react", ["React", "XUIBlock", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = g.createClass({ | |
displayName: "XUICardSection", | |
propTypes: h.propTypes, | |
getDefaultProps: h.getDefaultProps, | |
render: function() { | |
var l = j("_4-u3", h.getBackgroundClass(this.props)); | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: j(this.props.className, l) | |
}), this.props.children)); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("ComposerXStore", ["Arbiter", "ge"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = {}; | |
function j(l, m) { | |
return 'ComposerX/' + l + '/' + m; | |
} | |
var k = { | |
set: function(l, m, n) { | |
if (!i[l]) i[l] = {}; | |
i[l][m] = n; | |
g.inform(j(l, m), {}, g.BEHAVIOR_STATE); | |
}, | |
get: function(l, m) { | |
if (i[l]) return i[l][m]; | |
return null; | |
}, | |
getAllForComposer: function(l) { | |
return i[l] || {}; | |
}, | |
waitForComponents: function(l, m, n) { | |
g.registerCallback(n, m.map(j.bind(null, l))); | |
} | |
}; | |
g.subscribe('page_transition', function() { | |
for (var l in i) | |
if (!h(l)) delete i[l]; | |
}); | |
e.exports = k; | |
}, null); | |
__d("fileSliceName", ["UserAgent_DEPRECATED"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = 'slice', | |
i; | |
if (i = g.chrome()) { | |
if (i < 21) h = 'webkitSlice'; | |
} else if (i = g.firefox()) { | |
if (i < 13) h = 'mozSlice'; | |
} else if (!(i = g.safari())) | |
if (g.webkit()) h = 'webkitSlice'; | |
e.exports = h; | |
}, null); | |
__d("fileSlice", ["fileSliceName"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = a.File && a.File.prototype[g]; | |
e.exports = h; | |
}, null); | |
__d("VideoUploadFeatureDetector", ["UserAgent_DEPRECATED", "fileSlice"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = { | |
supportsChunking: function() { | |
return (typeof h === 'function') && this.supportsXHR(); | |
}, | |
supportsFullProgress: function() { | |
return !g.firefox(); | |
}, | |
supportsFileAPI: function() { | |
return ('FileList' in window); | |
}, | |
supportsFileReading: function() { | |
return ('FileReader' in window && 'DataView' in window); | |
}, | |
supportsXHR: function() { | |
return ('FormData' in window); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("ComposerXDragDropUtils", ["Arbiter", "CSS", "DOMQuery", "Parent", "VideoUploadFeatureDetector", "csx", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = { | |
handleDragEnterAndLeave: function(o) { | |
var p = i.scry(j.byClass(o, "_119"), "._2wr"); | |
g.subscribe('dragenter', function(q, r) { | |
if (o == r.element) p.forEach(h.hide); | |
}); | |
g.subscribe('dragleave', function(q, r) { | |
if (o == r.element) p.forEach(h.show); | |
}); | |
}, | |
filterImages: function(o) { | |
var p = k.supportsFileAPI(), | |
q = []; | |
for (var r = 0; r < o.length; r++) | |
if (o[r].type.match('image/*')) { | |
q.push(o[r]); | |
} else if (p && o[r].type.match('video/*')) q.push(o[r]); | |
return q; | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("uuid", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g() { | |
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(h) { | |
var i = Math.random() * 16 | 0, | |
j = h == 'x' ? i : (i & 3 | 8); | |
return j.toString(16); | |
}); | |
} | |
e.exports = g; | |
}, null); | |
__d("ComposerXSessionIDs", ["DOM", "cx", "uuid"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = {}, | |
k = { | |
getSessionID: function(l) { | |
return j[l]; | |
}, | |
resetSessionID: function(l) { | |
j[l] = i(); | |
}, | |
createSessionIDInput: function(l) { | |
return g.create('input', { | |
type: 'hidden', | |
name: 'composer_session_id', | |
className: "_5r_b", | |
value: l | |
}); | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("CacheStorage", ["ErrorUtils", "EventListener", "ExecutionEnvironment", "FBJSON", "WebStorage"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = { | |
memory: u, | |
localstorage: s, | |
sessionstorage: t | |
}, | |
m = '_@_', | |
n = '3b', | |
o = 'CacheStorageVersion'; | |
function p(w) { | |
"use strict"; | |
this._store = w; | |
} | |
p.prototype.getStore = function() { | |
"use strict"; | |
return this._store; | |
}; | |
p.prototype.keys = function() { | |
"use strict"; | |
var w = []; | |
for (var x = 0; x < this._store.length; x++) w.push(this._store.key(x)); | |
return w; | |
}; | |
p.prototype.get = function(w) { | |
"use strict"; | |
return this._store.getItem(w); | |
}; | |
p.prototype.set = function(w, x) { | |
"use strict"; | |
this._store.setItem(w, x); | |
}; | |
p.prototype.remove = function(w) { | |
"use strict"; | |
this._store.removeItem(w); | |
}; | |
p.prototype.clear = function() { | |
"use strict"; | |
this._store.clear(); | |
}; | |
for (var q in p) | |
if (p.hasOwnProperty(q)) s[q] = p[q]; | |
var r = p === null ? null : p.prototype; | |
s.prototype = Object.create(r); | |
s.prototype.constructor = s; | |
s.__superConstructor__ = p; | |
function s() { | |
"use strict"; | |
p.call(this, k.getLocalStorage()); | |
} | |
s.available = function() { | |
"use strict"; | |
return !!k.getLocalStorage(); | |
}; | |
for (q in p) | |
if (p.hasOwnProperty(q)) t[q] = p[q]; | |
t.prototype = Object.create(r); | |
t.prototype.constructor = t; | |
t.__superConstructor__ = p; | |
function t() { | |
"use strict"; | |
p.call(this, k.getSessionStorage()); | |
} | |
t.available = function() { | |
"use strict"; | |
return !!k.getSessionStorage(); | |
}; | |
function u() { | |
"use strict"; | |
this._store = {}; | |
} | |
u.prototype.getStore = function() { | |
"use strict"; | |
return this._store; | |
}; | |
u.prototype.keys = function() { | |
"use strict"; | |
return Object.keys(this._store); | |
}; | |
u.prototype.get = function(w) { | |
"use strict"; | |
if (this._store[w] === (void 0)) return null; | |
return this._store[w]; | |
}; | |
u.prototype.set = function(w, x) { | |
"use strict"; | |
this._store[w] = x; | |
}; | |
u.prototype.remove = function(w) { | |
"use strict"; | |
if (w in this._store) delete this._store[w]; | |
}; | |
u.prototype.clear = function() { | |
"use strict"; | |
this._store = {}; | |
}; | |
u.available = function() { | |
"use strict"; | |
return true; | |
}; | |
function v(w, x) { | |
"use strict"; | |
this._key_prefix = x || '_cs_'; | |
if (w == 'AUTO' || !w) | |
for (var y in l) { | |
var z = l[y]; | |
if (z.available()) { | |
w = y; | |
break; | |
} | |
} | |
if (w) | |
if (!l[w] || !l[w].available()) { | |
i.canUseDOM; | |
this._backend = new u(); | |
} else this._backend = new l[w](); | |
var aa = this.useBrowserStorage(); | |
if (aa) h.listen(window, 'storage', this._onBrowserValueChanged.bind(this)); | |
var ba = aa ? this._backend.getStore().getItem(o) : this._backend.getStore()[o]; | |
if (ba !== n) this.clear(); | |
} | |
v.prototype.useBrowserStorage = function() { | |
"use strict"; | |
return this._backend.getStore() === k.getLocalStorage() || this._backend.getStore() === k.getSessionStorage(); | |
}; | |
v.prototype.addValueChangeCallback = function(w) { | |
"use strict"; | |
this._changeCallbacks = this._changeCallbacks || []; | |
this._changeCallbacks.push(w); | |
return { | |
remove: function() { | |
this._changeCallbacks.slice(this._changeCallbacks.indexOf(w), 1); | |
}.bind(this) | |
}; | |
}; | |
v.prototype._onBrowserValueChanged = function(w) { | |
"use strict"; | |
if (this._changeCallbacks && String(w.key).startsWith(this._key_prefix)) this._changeCallbacks.forEach(function(x) { | |
x(w.key, w.oldValue, w.newValue); | |
}); | |
}; | |
v.prototype.keys = function() { | |
"use strict"; | |
var w = []; | |
g.guard(function() { | |
if (this._backend) { | |
var x = this._backend.keys(), | |
y = this._key_prefix.length; | |
for (var z = 0; z < x.length; z++) | |
if (x[z].substr(0, y) == this._key_prefix) w.push(x[z].substr(y)); | |
} | |
}.bind(this), 'CacheStorage')(); | |
return w; | |
}; | |
v.prototype.set = function(w, x, y) { | |
"use strict"; | |
if (this._backend) { | |
var z; | |
if (typeof x == 'string') { | |
z = m + x; | |
} else if (!y) { | |
z = { | |
__t: Date.now(), | |
__v: x | |
}; | |
z = j.stringify(z); | |
} else z = j.stringify(x); | |
var aa = this._backend, | |
ba = this._key_prefix + w, | |
ca = true; | |
while (ca) try { | |
aa.set(ba, z); | |
ca = false; | |
} catch (da) { | |
var ea = aa.keys().length; | |
this._evictCacheEntries(); | |
ca = aa.keys().length < ea; | |
} | |
} | |
}; | |
v.prototype._evictCacheEntries = function() { | |
"use strict"; | |
var w = [], | |
x = this._backend; | |
x.keys().forEach(function(z) { | |
if (z === o) return; | |
var aa = x.get(z); | |
if (aa === (void 0)) { | |
x.remove(z); | |
return; | |
} | |
if (v._hasMagicPrefix(aa)) return; | |
try { | |
aa = j.parse(aa, e.id); | |
} catch (ba) { | |
x.remove(z); | |
return; | |
} | |
if (aa && aa.__t !== (void 0) && aa.__v !== (void 0)) w.push([z, aa.__t]); | |
}); | |
w.sort(function(z, aa) { | |
return z[1] - aa[1]; | |
}); | |
for (var y = 0; y < Math.ceil(w.length / 2); y++) x.remove(w[y][0]); | |
}; | |
v.prototype.get = function(w, x) { | |
"use strict"; | |
var y; | |
if (this._backend) { | |
g.applyWithGuard(function() { | |
y = this._backend.get(this._key_prefix + w); | |
}, this, null, function() { | |
y = null; | |
}, 'CacheStorage:get'); | |
if (y !== null) { | |
if (v._hasMagicPrefix(y)) { | |
y = y.substr(m.length); | |
} else try { | |
y = j.parse(y, e.id); | |
if (y && y.__t !== (void 0) && y.__v !== (void 0)) y = y.__v; | |
} catch (z) { | |
y = (void 0); | |
} | |
} else y = (void 0); | |
} | |
if (y === (void 0) && x !== (void 0)) { | |
y = x; | |
this.set(w, y); | |
} | |
return y; | |
}; | |
v.prototype.remove = function(w) { | |
"use strict"; | |
if (this._backend) g.applyWithGuard(this._backend.remove, this._backend, [this._key_prefix + w], null, 'CacheStorage:remove'); | |
}; | |
v.prototype.clear = function() { | |
"use strict"; | |
if (this._backend) { | |
g.applyWithGuard(this._backend.clear, this._backend, null, null, null, 'CacheStorage:clear'); | |
if (this.useBrowserStorage()) { | |
this._backend.getStore().setItem(o, n); | |
} else this._backend.getStore()[o] = n; | |
} | |
}; | |
v.getAllStorageTypes = function() { | |
"use strict"; | |
return Object.keys(l); | |
}; | |
v._hasMagicPrefix = function(w) { | |
"use strict"; | |
return w.substr(0, m.length) === m; | |
}; | |
e.exports = v; | |
}, null); | |
__d("MarauderLogger", ["Banzai", "CacheStorage", "MarauderConfig"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = 'client_event', | |
k = 'navigation', | |
l = 180000, | |
m = 'marauder', | |
n = 'marauder_last_event_time', | |
o = 'marauder_last_session_id', | |
p = {}, | |
q = [], | |
r = false, | |
s = null, | |
t = null, | |
u = null, | |
v = 0, | |
w, x, y = false, | |
z = new h('localstorage', ''); | |
function aa() { | |
z.set(n, ba()); | |
} | |
g.subscribe(g.SHUTDOWN, aa); | |
function ba() { | |
w = w || z.get(n) || 0; | |
return w; | |
} | |
function ca() { | |
if (!y) { | |
x = z.get(o); | |
y = true; | |
} | |
var ra = Date.now(); | |
if (!x || ra - l > ba()) { | |
x = ra.toString(16) + '-' + (~~(Math.random() * 16777215)).toString(16); | |
z.set(o, x); | |
} | |
return x; | |
} | |
function da() { | |
return { | |
user_agent: window.navigator.userAgent, | |
screen_height: window.screen.availHeight, | |
screen_width: window.screen.availWidth, | |
density: (window.screen.devicePixelRatio || null), | |
platform: (window.navigator.platform || null), | |
locale: (window.navigator.language || null) | |
}; | |
} | |
function ea() { | |
return { | |
locale: navigator.language | |
}; | |
} | |
function fa(ra, sa, ta, ua, va, wa, xa) { | |
var ya = xa || Date.now(); | |
w = xa ? Date.now() : ya; | |
sa = sa || s; | |
return { | |
name: ra, | |
time: ya / 1000, | |
module: sa, | |
obj_type: ua, | |
obj_id: va, | |
uuid: wa, | |
extra: ta | |
}; | |
} | |
function ga(ra, sa, ta) { | |
return fa('content', null, { | |
flags: sa | |
}, null, null, ra, ta); | |
} | |
function ha(ra) { | |
var sa = window.__mrdr; | |
if (sa) | |
for (var ta in sa) { | |
var ua = sa[ta]; | |
if (ua[3] !== 0) { | |
delete sa[ta]; | |
if (ta === "1") | |
if (u !== null) { | |
ta = u; | |
} else continue; | |
ra.push(ga(ta, 1, ua[1])); | |
ra.push(ga(ta, 2, ua[2])); | |
ra.push(ga(ta, 3, ua[3])); | |
} | |
} | |
} | |
function ia(ra) { | |
ha(ra); | |
if (ra.length === 0) return; | |
if (r) ra.push(fa('counters', null, p)); | |
var sa = g.BASIC, | |
ta = i.gk_enabled; | |
if (v === 0 && ta) { | |
ra.push(fa('device_status', null, ea())); | |
sa = { | |
delay: 5000 | |
}; | |
} | |
if (ta && Math.random() < .01) ra.push(fa('device_info', null, da())); | |
if (u !== null) | |
for (var ua = 0; ua < ra.length; ua++) { | |
var va = ra[ua]; | |
if (va.uuid === null || va.uuid === (void 0)) va.uuid = u; | |
} | |
var wa = { | |
app_ver: i.app_version, | |
data: ra, | |
log_type: j, | |
seq: v++, | |
session_id: ca() | |
}, | |
xa = z.get('device_id'); | |
if (xa) wa.device_id = xa; | |
p = {}; | |
r = false; | |
g.post(m, wa, sa); | |
} | |
function ja(ra) { | |
if (!p[ra]) p[ra] = 0; | |
p[ra]++; | |
r = true; | |
} | |
function ka(ra, sa, ta, ua, va, wa, xa) { | |
ia([fa(ra, sa, ta, ua, va, wa, xa)]); | |
} | |
function la(ra, sa) { | |
if (s !== sa) { | |
q.push(fa(k, s, { | |
dest_module: sa, | |
source_url: t, | |
destination_url: ra | |
})); | |
s = sa; | |
t = ra; | |
} | |
} | |
function ma(ra, sa) { | |
if (s !== sa) { | |
u = null; | |
la(ra, sa); | |
} | |
} | |
function na(ra, sa, ta) { | |
ka(sa ? 'show_module' : 'hide_module', ra, ta); | |
} | |
function oa(ra) { | |
s = ra; | |
} | |
function pa() { | |
return s; | |
} | |
function qa(ra) { | |
if (u === null) { | |
u = ra; | |
if (ra !== null) { | |
ia(q); | |
q = []; | |
} | |
} | |
} | |
e.exports = { | |
count: ja, | |
log: ka, | |
navigateTo: ma, | |
navigateWithinSession: la, | |
toggleModule: na, | |
setUUID: qa, | |
setNavigationModule: oa, | |
getNavigationModule: pa | |
}; | |
}, null); | |
__d("ShareModeConst", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
SELF_PAGE: 'selfpage', | |
PAGE: 'page', | |
SELF_POST: 'self', | |
FRIEND: 'friend', | |
GROUP: 'group', | |
ALBUM: 'album', | |
MESSAGE: 'message', | |
ONE_CLICK: 'oneclick', | |
EVENT: 'event', | |
UNKNOWN: 'unknown' | |
}; | |
e.exports = g; | |
}, null); | |
__d("ComposerXMarauderLogger", ["Event", "ComposerTargetType", "ComposerType", "ComposerWaterfallEvent", "ComposerXSessionIDs", "MarauderLogger", "ShareModeConst"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = {}, | |
o = i.NORMAL, | |
p = { | |
logEvent: function(q, r, s) { | |
if (!s) s = {}; | |
var t = n[r], | |
u = k.getSessionID(r); | |
if (!t || !u) return; | |
if (s.logOncePerSession) { | |
if (!t.loggedEventTypes[u]) t.loggedEventTypes[u] = {}; | |
if (t.loggedEventTypes[u][q]) return; | |
t.loggedEventTypes[u][q] = true; | |
} | |
var v = Object.assign({}, s.extraData, { | |
composer_type: o, | |
composer_version: t.composerVersion, | |
target_type: t.targetType, | |
target_id: t.targetID, | |
ref: t.entryPointRef | |
}); | |
if (s.logDetails) { | |
v.has_photo = t.hasPhoto; | |
v.has_video = t.hasVideo; | |
v.xy_tag_count = t.numXYTags; | |
v.with_tag_count = t.numWithTags; | |
v.tags_user = t.numUserTags; | |
} | |
l.log(q, 'composer', v, (void 0), (void 0), u); | |
}, | |
registerComposer: function(q, r, s, t, u) { | |
n[q.id] = { | |
targetID: u, | |
targetType: r, | |
entryPointRef: s, | |
composerVersion: t, | |
loggedEventTypes: {}, | |
hasPhoto: false, | |
hasVideo: false, | |
numWithTags: 0, | |
numXYTags: 0, | |
numUserTags: 0 | |
}; | |
}, | |
getInstance: function(q) { | |
return n[q]; | |
}, | |
updateHasPhoto: function(q, r) { | |
if (!n[q]) return; | |
n[q].hasPhoto = r; | |
}, | |
updateHasVideo: function(q, r) { | |
if (!n[q]) return; | |
n[q].hasVideo = r; | |
}, | |
updateNumWithTags: function(q, r) { | |
if (!n[q]) return; | |
n[q].numWithTags = r; | |
}, | |
updateNumXYTags: function(q, r) { | |
if (!n[q]) return; | |
n[q].numXYTags = r; | |
n[q].numWithTags = n[q].numWithTags - r; | |
}, | |
updateNumUserTags: function(q, r) { | |
if (!n[q]) return; | |
n[q].numUserTags = r; | |
}, | |
listenForPostEvents: function(q, r) { | |
if (!r) return []; | |
return [g.listen(r, 'submit', function() { | |
p.logPost(q); | |
}), g.listen(r, 'success', function() { | |
p.logPostSuccess(q); | |
}), g.listen(r, 'error', function(event) { | |
p.logPostFailure(q, { | |
error_info: { | |
error_code: event.data.response.error, | |
error_description: event.data.response.errorDescription, | |
error_summary: event.data.response.errorSummary | |
} | |
}); | |
})]; | |
}, | |
setShareMode: function(q, r) { | |
var s = n[q]; | |
if (!s) return; | |
switch (r) { | |
case m.SELF_POST: | |
s.targetType = h.SELF_USER; | |
break; | |
case m.FRIEND: | |
s.targetType = h.OTHER_USER; | |
break; | |
case m.PAGE: | |
case m.SELF_PAGE: | |
s.targetType = h.PAGE; | |
break; | |
case m.GROUP: | |
s.targetType = h.GROUP; | |
break; | |
default: | |
s.targetType = h.OTHER; | |
} | |
}, | |
logEntry: function(q, r) { | |
if (typeof r === 'string') return; | |
p.logEvent(j.COMPOSER_ENTRY, q, { | |
logOncePerSession: true, | |
extraData: r | |
}); | |
}, | |
logCompleted: function(q, r) { | |
p.logEvent(j.COMPOSER_POST_COMPLETED, q, { | |
extraData: r | |
}); | |
}, | |
logPost: function(q, r) { | |
p.logEvent(j.COMPOSER_POST, q, { | |
extraData: r | |
}); | |
}, | |
logPostSuccess: function(q, r) { | |
p.logEvent(j.COMPOSER_POST_SUCCESS, q, { | |
extraData: r | |
}); | |
}, | |
logPostFailure: function(q, r) { | |
p.logEvent(j.COMPOSER_POST_FAILURE, q, { | |
extraData: r | |
}); | |
} | |
}; | |
e.exports = p; | |
}, null); | |
__d("destroyOnUnload", ["Run"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i) { | |
g.onLeave(i); | |
} | |
e.exports = h; | |
}, null); | |
__d("transferTextStyles", ["Style"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
fontFamily: null, | |
fontSize: null, | |
fontStyle: null, | |
fontWeight: null, | |
lineHeight: null, | |
wordWrap: null | |
}; | |
function i(j, k) { | |
for (var l in h) | |
if (h.hasOwnProperty(l)) h[l] = g.get(j, l); | |
g.apply(k, h); | |
} | |
e.exports = i; | |
}, null); | |
__d("TextMetrics", ["DOM", "Style", "UserAgent", "transferTextStyles"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
function k(m) { | |
var n = m.clientWidth, | |
o = (h.get(m, '-moz-box-sizing') == 'border-box'); | |
if (o && i.isBrowser('Firefox < 29')) return n; | |
var p = h.getFloat(m, 'paddingLeft') + h.getFloat(m, 'paddingRight'); | |
return n - p; | |
} | |
function l(m, n) { | |
"use strict"; | |
this.$TextMetrics0 = m; | |
this.$TextMetrics1 = !!n; | |
var o = 'textarea', | |
p = 'textMetrics'; | |
if (this.$TextMetrics1) { | |
o = 'div'; | |
p += ' textMetricsInline'; | |
} | |
this.$TextMetrics2 = g.create(o, { | |
className: p | |
}); | |
j(m, this.$TextMetrics2); | |
document.body.appendChild(this.$TextMetrics2); | |
} | |
l.prototype.measure = function(m) { | |
"use strict"; | |
var n = this.$TextMetrics0, | |
o = this.$TextMetrics2; | |
m = (m || n.value) + '...'; | |
if (!this.$TextMetrics1) { | |
var p = k(n); | |
h.set(o, 'width', Math.max(p, 0) + 'px'); | |
} | |
if (n.nodeName === 'TEXTAREA') { | |
o.value = m; | |
} else g.setContent(o, m); | |
return { | |
width: o.scrollWidth, | |
height: o.scrollHeight | |
}; | |
}; | |
l.prototype.destroy = function() { | |
"use strict"; | |
g.remove(this.$TextMetrics2); | |
}; | |
e.exports = l; | |
}, null); | |
__d("filterObject", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var g = Object.prototype.hasOwnProperty; | |
function h(i, j, k) { | |
if (!i) return null; | |
var l = {}; | |
for (var m in i) | |
if (g.call(i, m) && j.call(k, i[m], m, i)) l[m] = i[m]; | |
return l; | |
} | |
e.exports = h; | |
}, null); | |
__d("AbstractTextFieldMixin.react", ["React", "Keys", "cx", "invariant", "joinClasses", "cloneWithProps"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = g, | |
n = m.PropTypes, | |
o = { | |
propTypes: { | |
value: n.string, | |
placeholder: n.string, | |
tabIndex: n.string, | |
maxLength: n.number, | |
autoComplete: n.string, | |
onBackspace: n.func, | |
onBackTab: n.func, | |
onBlur: n.func, | |
onChange: n.func, | |
onDownArrow: n.func, | |
onEnter: n.func, | |
onEscape: n.func, | |
onFocus: n.func, | |
onKeyDown: n.func, | |
onLeftArrow: n.func, | |
onNoShiftEnter: n.func, | |
onRightArrow: n.func, | |
onShiftEnter: n.func, | |
onShiftDownArrow: n.func, | |
onShiftUpArrow: n.func, | |
onTab: n.func, | |
onUpArrow: n.func, | |
required: n.bool, | |
type: n.string, | |
autoCapitalize: n.string, | |
autoCorrect: n.string | |
}, | |
getInitialState: function() { | |
return { | |
focused: false, | |
value: this.props.defaultValue || '' | |
}; | |
}, | |
getValue: function() { | |
return this.props.value != null ? this.props.value : this.state.value; | |
}, | |
onInputKeyDown: function(p) { | |
var q = this.props, | |
r = p.keyCode, | |
s = p.shiftKey; | |
if (r === h.BACKSPACE && !s && q.onBackspace) { | |
q.onBackspace(p); | |
} else if (r === h.TAB && !s && q.onTab) { | |
q.onTab(p); | |
} else if (r === h.TAB && s && q.onBackTab) { | |
q.onBackTab(p); | |
} else if (r === h.UP) { | |
if (s) { | |
if (q.onShiftUpArrow) q.onShiftUpArrowAttempt(p); | |
} else if (q.onUpArrow) q.onUpArrow(p); | |
} else if (r === h.DOWN && q.onDownArrow) { | |
if (s) { | |
if (q.onShiftDownArrow) q.onShiftDownArrow(p); | |
} else if (q.onDownArrow) q.onDownArrow(p); | |
} else if (r === h.LEFT && q.onLeftArrow) { | |
q.onLeftArrow(p); | |
} else if (r === h.RIGHT && q.onRightArrow) { | |
q.onRightArrow(p); | |
} else if (r === h.RETURN) { | |
if (q.onEnter) q.onEnter(p); | |
if (s) { | |
if (q.onShiftEnter) q.onShiftEnter(p); | |
} else if (q.onNoShiftEnter) q.onNoShiftEnter(p); | |
} else if (r === h.ESC && q.onEscape) q.onEscape(p); | |
if (q.onKeyDown) q.onKeyDown(p); | |
}, | |
onInputChange: function(p) { | |
if (this.props.onChange) this.props.onChange(p); | |
if (this.props.value == null) this.setState({ | |
value: p.target.value | |
}); | |
}, | |
focusInput: function() { | |
this.getTextFieldDOM().focus(); | |
}, | |
blurInput: function() { | |
this.getTextFieldDOM().blur(); | |
}, | |
onInputBlur: function(event) { | |
if (this.props.onBlur) this.props.onBlur(event); | |
if (!event.isDefaultPrevented()) this.setState({ | |
focused: false | |
}); | |
}, | |
onInputFocus: function(event) { | |
if (this.props.onFocus) this.props.onFocus(event); | |
if (!event.isDefaultPrevented()) this.setState({ | |
focused: true | |
}); | |
}, | |
getTextFieldDOM: function() { | |
return g.findDOMNode(this.refs[this.getTextFieldRef()]); | |
}, | |
getTextFieldRef: function() { | |
return 'textField'; | |
}, | |
setTextFieldPropsOn: function(p) { | |
return l(p, { | |
'aria-activedescendant': this.props['aria-activedescendant'], | |
'aria-autocomplete': this.props['aria-autocomplete'], | |
'aria-label': this.props['aria-label'], | |
'aria-expanded': this.props['aria-expanded'], | |
'aria-owns': this.props['aria-owns'], | |
'data-testid': this.props['data-testid'], | |
required: this.props.required, | |
ref: this.getTextFieldRef(), | |
role: this.props.role, | |
placeholder: this.props.placeholder, | |
autoCapitalize: this.props.autoCapitalize, | |
autoComplete: this.props.autoComplete, | |
autoCorrect: this.props.autoCorrect, | |
onKeyDown: this.onInputKeyDown, | |
onBlur: this.onInputBlur, | |
onFocus: this.onInputFocus, | |
onChange: this.onInputChange, | |
disabled: this.props.disabled, | |
defaultValue: this.props.defaultValue, | |
name: this.props.name, | |
value: this.getValue(), | |
id: this.props.id, | |
maxLength: this.props.maxLength, | |
min: this.props.min, | |
max: this.props.max, | |
title: this.props.title, | |
type: this.props.type || p.props.type | |
}); | |
}, | |
render: function() { | |
var p = k(this.props.className, (("_58ak") + (!this.getValue() ? ' ' + "_3ct8" : ''))); | |
j(this.renderTextField); | |
return (g.createElement("label", { | |
className: p | |
}, this.renderTextField())); | |
} | |
}; | |
e.exports = o; | |
}, null); | |
__d("AbstractTextInput.react", ["AbstractTextFieldMixin.react", "React", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = h.createClass({ | |
displayName: "AbstractTextInput", | |
mixins: [g], | |
renderTextField: function() { | |
return this.setTextFieldPropsOn(h.createElement("input", { | |
type: "text", | |
className: "_58al", | |
size: this.props.size, | |
tabIndex: this.props.tabIndex, | |
onClick: this.props.onClick, | |
onKeyUp: this.props.onKeyUp, | |
onPaste: this.props.onPaste | |
})); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("Layout.react", ["React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "Layout", | |
render: function() { | |
var k = [], | |
l = [], | |
m = null; | |
g.Children.forEach(this.props.children, function(o, p) { | |
if (!o) return; | |
var q = m !== null, | |
r = g.cloneElement(o, { | |
className: i(o.props.className, ((q ? "_4bl8" : ''))), | |
key: p | |
}); | |
if (m === null) { | |
if (o.type === j.FillColumn) { | |
m = r; | |
} else k.push(r); | |
} else l.push(r); | |
}); | |
l.reverse(); | |
var n = k.concat(l); | |
if (m) n.push(m); | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: i(this.props.className, 'clearfix') | |
}), n)); | |
} | |
}); | |
j.Column = g.createClass({ | |
displayName: "Layout.Column", | |
render: function() { | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: i(this.props.className, "_4bl7") | |
}))); | |
} | |
}); | |
j.FillColumn = g.createClass({ | |
displayName: "Layout.FillColumn", | |
render: function() { | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: i(this.props.className, "_4bl9") | |
}))); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("PhotosMimeType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h) { | |
"use strict"; | |
if (this instanceof g === false) return new g(h); | |
this.$PhotosMimeType0 = h.split('/'); | |
} | |
g.prototype.isImage = function() { | |
"use strict"; | |
return this.$PhotosMimeType0[0] === 'image'; | |
}; | |
g.prototype.isJpeg = function() { | |
"use strict"; | |
return this.isImage() && (this.$PhotosMimeType0[1] === 'jpeg' || this.$PhotosMimeType0[1] === 'pjpeg'); | |
}; | |
e.exports = g; | |
}, null); | |
__d("DataTransfer", ["PhotosMimeType", "createArrayFromMixed", "emptyFunction"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = new RegExp('\u000D\u000A', 'g'), | |
k = '\u000A', | |
l = { | |
'text/rtf': 1, | |
'text/html': 1 | |
}; | |
function m(o) { | |
if (o.kind == 'file') return o.getAsFile(); | |
} | |
function n(o) { | |
"use strict"; | |
this.data = o; | |
this.types = o.types ? h(o.types) : []; | |
} | |
n.prototype.isRichText = function() { | |
"use strict"; | |
return this.types.some(function(o) { | |
return l[o]; | |
}); | |
}; | |
n.prototype.getText = function() { | |
"use strict"; | |
var o; | |
if (this.data.getData) | |
if (!this.types.length) { | |
o = this.data.getData('Text'); | |
} else if (this.types.indexOf('text/plain') != -1) o = this.data.getData('text/plain'); | |
return o ? o.replace(j, k) : null; | |
}; | |
n.prototype.getHTML = function() { | |
"use strict"; | |
if (this.data.getData) | |
if (!this.types.length) { | |
return this.data.getData('Text'); | |
} else if (this.types.indexOf('text/html') != -1) return this.data.getData('text/html'); | |
}; | |
n.prototype.isLink = function() { | |
"use strict"; | |
return this.types.some(function(o) { | |
return o.indexOf('url') != -1 || o.indexOf('text/uri-list') != -1; | |
}); | |
}; | |
n.prototype.isImage = function() { | |
"use strict"; | |
var o = this.types.some(function(s) { | |
return s.indexOf('application/x-moz-file') != -1; | |
}); | |
if (o) return true; | |
var p = this.getFiles(); | |
for (var q = 0; q < p.length; q++) { | |
var r = p[q].type; | |
if (!g(r).isImage()) return false; | |
} | |
return true; | |
}; | |
n.prototype.getCount = function() { | |
"use strict"; | |
if (this.data.hasOwnProperty('items')) { | |
return this.data.items.length; | |
} else if (this.data.hasOwnProperty('mozItemCount')) { | |
return this.data.mozItemCount; | |
} else if (this.data.files) return this.data.files.length; | |
return null; | |
}; | |
n.prototype.getFiles = function() { | |
"use strict"; | |
if (this.data.items) { | |
return Array.prototype.slice.call(this.data.items).map(m).filter(i.thatReturnsArgument); | |
} else if (this.data.files) { | |
return Array.prototype.slice.call(this.data.files); | |
} else return []; | |
}; | |
n.prototype.hasFiles = function() { | |
"use strict"; | |
return this.getFiles().length > 0; | |
}; | |
e.exports = n; | |
}, null); | |
__d("DateStrings", ["fbt"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h, i, j, k, l, m, n, o, p = { | |
getWeekdayName: function(q) { | |
if (!m) m = [g._("\u661f\u671f\u65e5"), g._("\u661f\u671f\u4e00"), g._("\u661f\u671f\u4e8c"), g._("\u661f\u671f\u4e09"), g._("\u661f\u671f\u56db"), g._("\u661f\u671f\u4e94"), g._("\u661f\u671f\u516d")]; | |
return m[q]; | |
}, | |
getUppercaseWeekdayName: function(q) { | |
if (!o) o = [g._("\u661f\u671f\u65e5"), g._("\u661f\u671f\u4e00"), g._("\u661f\u671f\u4e8c"), g._("\u661f\u671f\u4e09"), g._("\u661f\u671f\u56db"), g._("\u661f\u671f\u4e94"), g._("\u661f\u671f\u516d")]; | |
return o[q]; | |
}, | |
getWeekdayNameShort: function(q) { | |
if (!n) n = [g._("\u9031\u65e5"), g._("\u9031\u4e00"), g._("\u9031\u4e8c"), g._("\u9031\u4e09"), g._("\u9031\u56db"), g._("\u9031\u4e94"), g._("\u9031\u516d")]; | |
return n[q]; | |
}, | |
getMonthName: function(q) { | |
if (!h) h = [g._("1 \u6708"), g._("2 \u6708"), g._("3 \u6708"), g._("4 \u6708"), g._("5 \u6708"), g._("6 \u6708"), g._("7 \u6708"), g._("8 \u6708"), g._("9 \u6708"), g._("10 \u6708"), g._("11 \u6708"), g._("12 \u6708")]; | |
return h[q - 1]; | |
}, | |
getUppercaseMonthName: function(q) { | |
if (!k) k = [g._("1 \u6708"), g._("2 \u6708"), g._("3 \u6708"), g._("4 \u6708"), g._("5 \u6708"), g._("6 \u6708"), g._("7 \u6708"), g._("8 \u6708"), g._("9 \u6708"), g._("10 \u6708"), g._("11 \u6708"), g._("12 \u6708")]; | |
return k[q - 1]; | |
}, | |
getMonthNameShort: function(q) { | |
if (!i) i = [g._("1 \u6708"), g._("2 \u6708"), g._("3 \u6708"), g._("4 \u6708"), g._("5 \u6708"), g._("6 \u6708"), g._("7 \u6708"), g._("8 \u6708"), g._("9 \u6708"), g._("10 \u6708"), g._("11 \u6708"), g._("12 \u6708")]; | |
return i[q - 1]; | |
}, | |
getUppercaseMonthNameShort: function(q) { | |
if (!j) j = [g._("1 \u6708"), g._("2 \u6708"), g._("3 \u6708"), g._("4 \u6708"), g._("5 \u6708"), g._("6 \u6708"), g._("7 \u6708"), g._("8 \u6708"), g._("9 \u6708"), g._("10 \u6708"), g._("11 \u6708"), g._("12 \u6708")]; | |
return j[q - 1]; | |
}, | |
getOrdinalSuffix: function(q) { | |
if (!l) l = ['', g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5"), g._("\u65e5")]; | |
return l[q]; | |
}, | |
getDayLabel: function() { | |
return g._("\u65e5\uff1a"); | |
}, | |
getMonthLabel: function() { | |
return g._("\u6708\uff1a"); | |
}, | |
getYearLabel: function() { | |
return g._("\u5e74\uff1a"); | |
}, | |
getDayPlaceholder: function() { | |
return g._("\u65e5"); | |
}, | |
getMonthPlaceholder: function() { | |
return g._("\u6708"); | |
}, | |
getYearPlaceholder: function() { | |
return g._("\u5e74"); | |
} | |
}; | |
e.exports = p; | |
}, null); | |
__d("DragDropFileUpload", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
f.isSupported = function() { | |
return typeof(FileList) !== "undefined"; | |
}; | |
}, null); | |
__d("DocumentDragDrop", ["Event", "Arbiter", "CSS", "DOM", "DOMQuery", "DragDropFileUpload", "emptyFunction", "getObjectValues"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
var o = {}, | |
p = 0; | |
function q() { | |
p = 0; | |
n(o).forEach(function(v) { | |
i.removeClass(v.element, v.className); | |
h.inform('dragleave', { | |
element: v.element | |
}); | |
}); | |
} | |
var r = null; | |
function s() { | |
r && clearTimeout(r); | |
r = setTimeout(function() { | |
q(); | |
}, 500); | |
} | |
function t() { | |
if (!l.isSupported()) return; | |
g.listen(document, 'dragenter', function(v) { | |
if (p === 0) n(o).forEach(function(w) { | |
i.addClass(w.element, w.className); | |
h.inform('dragenter', { | |
element: w.element, | |
event: v | |
}); | |
}); | |
p++; | |
s(); | |
}); | |
g.listen(document, 'dragleave', function(v) { | |
p--; | |
if (p === 0) q(); | |
s(); | |
}); | |
g.listen(document, 'drop', function(v) { | |
q(); | |
var w = v.getTarget(); | |
if (k.isNodeOfType(v.getTarget(), 'input')) | |
if (w.type === 'file') return; | |
v.prevent(); | |
}); | |
g.listen(document, 'dragover', g.prevent); | |
document.addEventListener('dragover', s, true); | |
t = m; | |
} | |
var u = { | |
init: function() { | |
t(); | |
}, | |
registerStatusElement: function(v, w) { | |
t(); | |
o[j.getID(v)] = { | |
element: v, | |
className: w | |
}; | |
if (p > 0) i.addClass(v, w); | |
}, | |
removeStatusElement: function(v) { | |
var w = j.getID(v), | |
x = o[w]; | |
if (x) { | |
i.removeClass(x.element, x.className); | |
delete o[w]; | |
} | |
} | |
}; | |
e.exports = u; | |
}, null); | |
__d("DragDropTarget", ["Arbiter", "Event", "SubscriptionsHandler", "CSS", "DataTransfer", "DocumentDragDrop", "DragDropFileUpload", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
function o(p) { | |
this._element = p; | |
this._listeners = new i(); | |
this._statusElem = p; | |
this._dragEnterCount = 0; | |
this._enabled = false; | |
} | |
Object.assign(o.prototype, { | |
_onFilesDropCallback: n, | |
_onURLDropCallback: n, | |
_onPlainTextDropCallback: n, | |
_onDropCallback: n, | |
_fileFilterFn: n.thatReturnsArgument, | |
setOnDocumentDragEnterCallback: function(p) { | |
this._onDocumentDragEnterCallback = p; | |
return this; | |
}, | |
setOnDocumentDragLeaveCallback: function(p) { | |
this._onDocumentDragLeaveCallback = p; | |
return this; | |
}, | |
setOnDragEnterCallback: function(p) { | |
this._onDragEnterCallback = p; | |
return this; | |
}, | |
setOnDragLeaveCallback: function(p) { | |
this._onDragLeaveCallback = p; | |
return this; | |
}, | |
setOnFilesDropCallback: function(p) { | |
this._onFilesDropCallback = p; | |
return this; | |
}, | |
setOnURLDropCallback: function(p) { | |
this._onURLDropCallback = p; | |
return this; | |
}, | |
setOnPlainTextDropCallback: function(p) { | |
this._onPlainTextDropCallback = p; | |
return this; | |
}, | |
setOnDropCallback: function(p) { | |
this._onDropCallback = p; | |
return this; | |
}, | |
enable: function() { | |
if (!m.isSupported()) return this; | |
this._listeners.engage(); | |
l.registerStatusElement(this._statusElem, 'fbWantsDragDrop'); | |
this._listeners.addSubscriptions(h.listen(this._element, 'dragenter', this._onDragEnter.bind(this)), h.listen(this._element, 'dragleave', this._onDragLeave.bind(this)), h.listen(this._element, 'dragover', this._onDragOver.bind(this)), h.listen(this._element, 'drop', function(p) { | |
this._dragEnterCount = 0; | |
j.removeClass(this._statusElem, 'fbDropReady'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhoto'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhotos'); | |
j.removeClass(this._statusElem, 'fbDropReadyLink'); | |
var q = {}, | |
r = false, | |
s = this._fileFilterFn(p.dataTransfer.files); | |
if (s.length) { | |
this._onFilesDropCallback(s, p); | |
q.files = s; | |
r = true; | |
} | |
var t = p.dataTransfer.getData('url') || p.dataTransfer.getData('text/uri-list'); | |
if (t) { | |
this._onURLDropCallback(t, p); | |
q.url = t; | |
r = true; | |
} | |
var u = p.dataTransfer.getData('text/plain'); | |
if (u) { | |
this._onPlainTextDropCallback(u, p); | |
q.plainText = u; | |
r = true; | |
} | |
if (r) this._onDropCallback(q, p); | |
p.kill(); | |
}.bind(this))); | |
this._listeners.addSubscriptions(g.subscribe('dragenter', this._onDocumentDragEnter.bind(this)), g.subscribe('dragleave', this._onDocumentDragLeave.bind(this))); | |
this._enabled = true; | |
return this; | |
}, | |
disable: function() { | |
if (!this._enabled) return this; | |
l.removeStatusElement(this._statusElem, 'fbWantsDragDrop'); | |
j.removeClass(this._statusElem, 'fbDropReady'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhoto'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhotos'); | |
j.removeClass(this._statusElem, 'fbDropReadyLink'); | |
this._listeners.release(); | |
this._enabled = false; | |
return this; | |
}, | |
setFileFilter: function(p) { | |
this._fileFilterFn = p; | |
return this; | |
}, | |
setStatusElement: function(p) { | |
this._statusElem = p; | |
return this; | |
}, | |
_onDragEnter: function(p) { | |
if (this._dragEnterCount === 0) { | |
var q = new k(p.dataTransfer); | |
j.addClass(this._statusElem, 'fbDropReady'); | |
if (q.isLink() || !q.isImage()) { | |
j.addClass(this._statusElem, 'fbDropReadyLink'); | |
} else if (q.getCount() > 1) { | |
j.addClass(this._statusElem, 'fbDropReadyPhotos'); | |
} else j.addClass(this._statusElem, 'fbDropReadyPhoto'); | |
this._onDragEnterCallback && this._onDragEnterCallback(); | |
} | |
this._dragEnterCount++; | |
p.preventDefault(); | |
}, | |
_onDragLeave: function(p) { | |
this._dragEnterCount = Math.max(this._dragEnterCount - 1, 0); | |
if (this._dragEnterCount === 0) { | |
j.removeClass(this._statusElem, 'fbDropReady'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhoto'); | |
j.removeClass(this._statusElem, 'fbDropReadyPhotos'); | |
j.removeClass(this._statusElem, 'fbDropReadyLink'); | |
this._onDragLeaveCallback && this._onDragLeaveCallback(); | |
} | |
}, | |
_onDragOver: function(p) { | |
if (!p.dataTransfer) { | |
h.kill(p); | |
return; | |
} | |
var q = p.dataTransfer.effectAllowed; | |
p.dataTransfer.dropEffect = (q == 'move' || q == 'linkMove') ? 'move' : 'copy'; | |
h.kill(p); | |
}, | |
_onDocumentDragEnter: function(event, p) { | |
if (this._onDocumentDragEnterCallback && p.element == this._element) this._onDocumentDragEnterCallback(); | |
}, | |
_onDocumentDragLeave: function(event, p) { | |
this._dragEnterCount = 0; | |
this._onDragLeave(event); | |
if (this._onDocumentDragLeaveCallback && p.element == this._element) this._onDocumentDragLeaveCallback(); | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("ReactComposerIDGenerator", ["ReactComposerConstants", "uniqueID"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = { | |
getID: function() { | |
return g.ID_PREFIX + h(); | |
}, | |
isComposerID: function(j) { | |
return !!j && j.startsWith(g.ID_PREFIX); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("LitestandComposer", ["Arbiter", "Bootloader", "ReactComposerIDGenerator", "Run", "SubscriptionsHandler"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = 600; | |
function m(o, p) { | |
h.loadModules(["Animation", "ComposerXController", "ComposerXMarauderLogger", "DOM", "LitestandStream"], function(q, r, s, t, u) { | |
if (!i.isComposerID(o)) r.reset(o); | |
if (!u || !p) return; | |
t.prependContent(u.getStreamRoot(), p); | |
new q(p).from('opacity', 0).to('opacity', 1).duration(l).go(); | |
s.logCompleted(o); | |
}); | |
} | |
var n = { | |
initComposer: function(o) { | |
var p = new k(); | |
p.addSubscriptions(g.subscribe('LitestandComposer/publish', function(q, r) { | |
if (r.composer_id === o) m(o, r.markup); | |
}.bind(this))); | |
j.onLeave(function() { | |
p.release(); | |
}); | |
} | |
}; | |
e.exports = n; | |
}, null); | |
__d("DOMWrapper", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g, h, i = { | |
setRoot: function(j) { | |
g = j; | |
}, | |
getRoot: function() { | |
return g || document.body; | |
}, | |
setWindow: function(j) { | |
h = j; | |
}, | |
getWindow: function() { | |
return h || self; | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("Flash", ["DOMEventListener", "DOMWrapper", "QueryString", "UserAgent_DEPRECATED", "guid", "htmlSpecialChars"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = {}, | |
n, o = h.getWindow().document; | |
function p(u) { | |
var v = o.getElementById(u); | |
if (v) v.parentNode.removeChild(v); | |
delete m[u]; | |
} | |
function q() { | |
for (var u in m) | |
if (m.hasOwnProperty(u)) p(u); | |
} | |
function r(u) { | |
return u.replace(/\d+/g, function(v) { | |
return '000'.substring(v.length) + v; | |
}); | |
} | |
function s(u) { | |
if (!n) { | |
if (j.ie() >= 9) g.add(window, 'unload', q); | |
n = true; | |
} | |
m[u] = u; | |
} | |
var t = { | |
embed: function(u, v, w, x) { | |
var y = k(); | |
u = l(u).replace(/&/g, '&'); | |
w = Object.assign({ | |
allowscriptaccess: 'always', | |
flashvars: x, | |
movie: u | |
}, w); | |
if (typeof w.flashvars == 'object') w.flashvars = i.encode(w.flashvars); | |
var z = []; | |
for (var aa in w) | |
if (w.hasOwnProperty(aa) && w[aa]) z.push('<param name="' + l(aa) + '" value="' + l(w[aa]) + '">'); | |
var ba = v.appendChild(o.createElement('span')), | |
ca = '<object ' + (j.ie() ? 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ' : 'type="application/x-shockwave-flash"') + 'data="' + u + '" ' + (w.height ? 'height="' + w.height + '" ' : '') + (w.width ? 'width="' + w.width + '" ' : '') + 'id="' + y + '">' + z.join('') + '</object>'; | |
ba.innerHTML = ca; | |
var da = ba.firstChild; | |
s(y); | |
return da; | |
}, | |
remove: p, | |
getVersion: function() { | |
var u = 'Shockwave Flash', | |
v = 'application/x-shockwave-flash', | |
w = 'ShockwaveFlash.ShockwaveFlash', | |
x; | |
if (navigator.plugins && typeof navigator.plugins[u] == 'object') { | |
var y = navigator.plugins[u].description; | |
if (y && navigator.mimeTypes && navigator.mimeTypes[v] && navigator.mimeTypes[v].enabledPlugin) x = y.match(/\d+/g); | |
} | |
if (!x) try { | |
x = (new ActiveXObject(w)).GetVariable('$version').match(/(\d+),(\d+),(\d+),(\d+)/); | |
x = Array.prototype.slice.call(x, 1); | |
} catch (z) {} | |
return x; | |
}, | |
getVersionString: function() { | |
var u = t.getVersion(); | |
return u ? u.join('.') : ''; | |
}, | |
checkMinVersion: function(u) { | |
var v = t.getVersion(); | |
if (!v) return false; | |
return r(v.join('.')) >= r(u); | |
}, | |
isAvailable: function() { | |
return !!t.getVersion(); | |
} | |
}; | |
e.exports = t; | |
}, null); | |
__d("TextInputControl", ["DOMControl", "Event", "Input", "debounce"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
for (var k in g) | |
if (g.hasOwnProperty(k)) m[k] = g[k]; | |
var l = g === null ? null : g.prototype; | |
m.prototype = Object.create(l); | |
m.prototype.constructor = m; | |
m.__superConstructor__ = g; | |
function m(n) { | |
"use strict"; | |
g.call(this, n); | |
var o = this.getRoot(), | |
p = j(this.update.bind(this), 0); | |
h.listen(o, { | |
input: p, | |
keydown: p, | |
paste: p | |
}); | |
} | |
m.prototype.setMaxLength = function(n) { | |
"use strict"; | |
i.setMaxLength(this.getRoot(), n); | |
return this; | |
}; | |
m.prototype.getValue = function() { | |
"use strict"; | |
return i.getValue(this.getRoot()); | |
}; | |
m.prototype.isEmpty = function() { | |
"use strict"; | |
return i.isEmpty(this.getRoot()); | |
}; | |
m.prototype.setValue = function(n) { | |
"use strict"; | |
i.setValue(this.getRoot(), n); | |
this.update(); | |
return this; | |
}; | |
m.prototype.clear = function() { | |
"use strict"; | |
return this.setValue(''); | |
}; | |
m.prototype.setPlaceholderText = function(n) { | |
"use strict"; | |
i.setPlaceholder(this.getRoot(), n); | |
return this; | |
}; | |
e.exports = m; | |
}, null); | |
__d("TextAreaControl", ["Arbiter", "ArbiterMixin", "CSS", "DOMControl", "Event", "Style", "TextInputControl", "TextMetrics", "classWithMixins", "mixin"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
function q(v, w) { | |
return l.getFloat(v, w) || 0; | |
} | |
var r = o(m, p(h)); | |
for (var s in r) | |
if (r.hasOwnProperty(s)) u[s] = r[s]; | |
var t = r === null ? null : r.prototype; | |
u.prototype = Object.create(t); | |
u.prototype.constructor = u; | |
u.__superConstructor__ = r; | |
function u(v) { | |
"use strict"; | |
r.call(this, v); | |
this.autogrow = i.hasClass(v, 'uiTextareaAutogrow'); | |
this.autogrowWithPlaceholder = i.hasClass(v, 'uiTextareaAutogrowWithPlaceholder'); | |
this.width = null; | |
k.listen(v, 'focus', this._handleFocus.bind(this)); | |
} | |
u.prototype.setAutogrow = function(v) { | |
"use strict"; | |
this.autogrow = v; | |
return this; | |
}; | |
u.prototype.onupdate = function() { | |
"use strict"; | |
t.onupdate.call(this); | |
this.updateHeight(); | |
}; | |
u.prototype.updateHeight = function() { | |
"use strict"; | |
if (this.autogrow) { | |
var v = this.getRoot(); | |
if (!this.metrics) this.metrics = new n(v); | |
if (typeof this.initialHeight === 'undefined') { | |
this.isBorderBox = l.get(v, 'box-sizing') === 'border-box' || l.get(v, '-moz-box-sizing') === 'border-box' || l.get(v, '-webkit-box-sizing') === 'border-box'; | |
this.borderBoxOffset = q(v, 'padding-top') + q(v, 'padding-bottom') + q(v, 'border-top-width') + q(v, 'border-bottom-width'); | |
this.initialHeight = v.offsetHeight - this.borderBoxOffset; | |
} | |
var w = null; | |
if ((!v.value || v.value.length === 0) && this.autogrowWithPlaceholder) { | |
w = this.metrics.measure(v.placeholder); | |
} else w = this.metrics.measure(); | |
var x = Math.max(this.initialHeight, w.height); | |
if (this.isBorderBox) x += this.borderBoxOffset; | |
if (this.maxHeight && x > this.maxHeight) { | |
x = this.maxHeight; | |
g.inform('maxHeightExceeded', { | |
textArea: v | |
}); | |
} | |
if (x !== this.height) { | |
this.height = x; | |
l.set(v, 'height', x + 'px'); | |
g.inform('reflow'); | |
this.inform('resize'); | |
} | |
} else if (this.metrics) { | |
this.metrics.destroy(); | |
this.metrics = null; | |
} | |
}; | |
u.prototype.resetHeight = function() { | |
"use strict"; | |
this.height = -1; | |
this.update(); | |
}; | |
u.prototype.setMaxHeight = function(v) { | |
"use strict"; | |
this.maxHeight = v; | |
}; | |
u.prototype.setAutogrowWithPlaceholder = function(v) { | |
"use strict"; | |
this.autogrowWithPlacedholder = v; | |
}; | |
u.prototype._handleFocus = function() { | |
"use strict"; | |
this.width = null; | |
}; | |
u.getInstance = function(v) { | |
"use strict"; | |
return j.getInstance(v) || new u(v); | |
}; | |
e.exports = u; | |
}, null); | |
__d("XUIError", ["ARIA", "Bootloader", "CSS", "DataStore", "DOM", "Event", "JSXDOM", "Parent", "Promise", "cx", "filterObject", "getActiveElement", "getElementText", "invariant", "isNode", "memoize", "nl2br"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var x = 'data-xui-error-alignh', | |
y = 'XUIError', | |
z = 'data-xui-error', | |
aa = "_1tp7", | |
ba = 'data-xui-error-position'; | |
l.listen(document.documentElement, 'mouseover', function(event) { | |
if (n.byClass(r(), aa)) return; | |
var pa = n.byClass(event.getTarget(), aa); | |
if (pa) { | |
la(pa); | |
} else ma(); | |
}); | |
l.listen(document.documentElement, 'focusin', function(event) { | |
var pa = n.byClass(event.getTarget(), aa); | |
if (pa) { | |
la(pa); | |
} else ma(); | |
}); | |
l.listen(document.documentElement, 'focusout', function(event) { | |
ma(); | |
}); | |
var ca = v(function() { | |
return new o(function(pa, qa) { | |
h.loadModules(["ContextualDialog", "ContextualLayerAutoFlip", "ContextualLayerUpdateOnScroll", "LayerRefocusOnHide", "React"], function(ra, sa, ta, ua, va) { | |
var wa = { | |
ContextualDialog: ra, | |
ContextualLayerAutoFlip: sa, | |
ContextualLayerUpdateOnScroll: ta, | |
LayerRefocusOnHide: ua, | |
React: va | |
}; | |
pa(Object.assign({}, wa, da(wa))); | |
}); | |
}); | |
}); | |
function da(pa) { | |
var qa = pa.ContextualDialog, | |
ra = pa.ContextualLayerAutoFlip, | |
sa = pa.ContextualLayerUpdateOnScroll, | |
ta = pa.LayerRefocusOnHide, | |
ua = m.div({ | |
className: "_1tp8" | |
}), | |
va = (m.div({ | |
className: "_53ij _1tp9" | |
}, m.div({ | |
className: "_1tpa" | |
}), ua)), | |
wa = new qa({ | |
addedBehaviors: [sa, ra], | |
theme: { | |
wrapperClassName: "_1tpb", | |
arrowDimensions: { | |
offset: 12, | |
length: 16 | |
} | |
} | |
}, va); | |
wa.disableBehavior(ta); | |
wa.shouldSetARIAProperties(false); | |
return { | |
dialog: wa, | |
dialogBodyNode: va, | |
dialogMessageNode: ua | |
}; | |
} | |
var ea = null; | |
function fa(pa) { | |
return Object.assign({ | |
message: pa.getAttribute(z), | |
position: pa.getAttribute(ba), | |
alignh: pa.getAttribute(x) | |
}, j.get(pa, y)); | |
} | |
function ga(pa, qa) { | |
j.set(pa, y, qa); | |
} | |
function ha(pa, qa) { | |
j.set(pa, y, Object.assign({}, j.get(pa, y), qa)); | |
} | |
function ia(pa) { | |
j.remove(pa, y); | |
} | |
var ja = false, | |
ka = false; | |
function la(pa) { | |
ca().done(function(qa) { | |
var ra = qa.React, | |
sa = qa.dialog, | |
ta = qa.dialogMessageNode, | |
ua = fa(pa), | |
va = ua.message; | |
if (va == null) return; | |
var wa = ra.isValidElement(va); | |
if (ja && !wa) ra.unmountComponentAtNode(ta); | |
if (wa) { | |
ra.render(va, ta); | |
} else { | |
t(typeof va === 'string' || u(va)); | |
if (typeof va === 'string') va = w(va); | |
k.setContent(ta, va); | |
} | |
ja = wa; | |
sa.setContext(pa).setPosition(ua.position || 'right').setAlignment(ua.alignh || (ua.position === 'above' || ua.position === 'below' ? 'right' : null)).show(); | |
g.notify(s(ta)); | |
ea = pa; | |
}); | |
ka = true; | |
} | |
function ma() { | |
if (!ka) return; | |
ca().done(function(pa) { | |
var qa = pa.React, | |
ra = pa.dialog, | |
sa = pa.dialogMessageNode; | |
if (!ea) return; | |
if (ja) { | |
qa.unmountComponentAtNode(sa); | |
ja = false; | |
} | |
ra.hide(); | |
ea = null; | |
}); | |
} | |
function na(pa) { | |
if (k.contains(pa, r())) la(pa); | |
} | |
var oa = { | |
set: function(pa) { | |
var qa = pa.target, | |
ra = pa.message, | |
sa = pa.position, | |
ta = pa.alignh; | |
t(ra !== null); | |
i.addClass(qa, aa); | |
ha(qa, q({ | |
message: ra, | |
position: sa, | |
alignh: ta | |
}, function(ua) { | |
return ua !== (void 0); | |
})); | |
na(qa); | |
}, | |
clear: function(pa) { | |
i.removeClass(pa, aa); | |
pa.removeAttribute(z); | |
ia(pa); | |
if (pa === ea) ma(); | |
}, | |
updatePosition: function() { | |
if (!ka) return; | |
ca().done(function(pa) { | |
var qa = pa.dialog; | |
if (ea) qa.updatePosition(); | |
}); | |
}, | |
__setReactError: function(pa, qa) { | |
var ra = qa.message, | |
sa = qa.position, | |
ta = qa.alignh; | |
t(ra !== null); | |
ga(pa, { | |
message: ra, | |
position: sa, | |
alignh: ta | |
}); | |
na(pa); | |
}, | |
__clearReactError: function(pa) { | |
ia(pa); | |
if (pa === ea) ma(); | |
} | |
}; | |
e.exports = oa; | |
}, null); | |
__d("XUIError.react", ["React", "XUIError", "cx", "joinClasses", "onlyChild"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = g, | |
m = l.PropTypes, | |
n = "_1tp7", | |
o = g.createClass({ | |
displayName: "ReactXUIError", | |
propTypes: { | |
xuiError: m.any, | |
xuiErrorPosition: m.oneOf(['above', 'below', 'left', 'right']), | |
xuiErrorAlignh: m.oneOf(['left', 'center', 'right']) | |
}, | |
componentDidMount: function() { | |
if (this.props.xuiError != null) h.__setReactError(g.findDOMNode(this), { | |
message: this.props.xuiError, | |
position: this.props.xuiErrorPosition, | |
alignh: this.props.xuiErrorAlignh | |
}); | |
}, | |
componentDidUpdate: function() { | |
if (this.props.xuiError == null) { | |
h.__clearReactError(g.findDOMNode(this)); | |
} else h.__setReactError(g.findDOMNode(this), { | |
message: this.props.xuiError, | |
position: this.props.xuiErrorPosition, | |
alignh: this.props.xuiErrorAlignh | |
}); | |
}, | |
componentWillUnmount: function() { | |
h.__clearReactError(g.findDOMNode(this)); | |
}, | |
render: function() { | |
var p = k(this.props.children); | |
if (this.props.xuiError != null) p = g.cloneElement(p, { | |
className: j(p.props.className, n) | |
}); | |
return p; | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("highlight", ["Animation", "Style"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
function i(j, k, l, m) { | |
new g(j).from('background', m || '#fff9d7').to('background', l || '#fff').ease(g.ease.both).duration(2000).ondone(function() { | |
h.set(j, 'background', ''); | |
k && k(); | |
}).go(); | |
} | |
e.exports = i; | |
}, null); | |
__d("ReactComposerEvents", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
CHANGE: 'change', | |
SELECT_ATTACHMENT: 'composer/selectAttachment', | |
FOCUS: 'composer/focus', | |
MENTION_INPUT_FOCUS: 'composer/mentionInputFocused', | |
POST_STARTED: 'composer/postStarted' | |
}; | |
e.exports = g; | |
}, null); | |
__d("ReactComposerMLELazyAttachment.react", ["ReactComposerAttachmentType", "ReactComposerLoadableAttachmentBodyMixin", "Bootloader", "React", "XReactComposerMLEAttachmentBootstrapController", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = j.createClass({ | |
displayName: "ReactComposerMLELazyAttachment", | |
mixins: [h], | |
statics: { | |
attachmentID: g.MLE | |
}, | |
bootload: function(n) { | |
i.loadModules(["ReactComposerMLEAttachmentContainer.react"], n); | |
}, | |
getBootstrapURI: function() { | |
return k.getURIBuilder().setString('composer_id', this.context.composerID).getURI(); | |
} | |
}); | |
e.exports = m; | |
}, null); | |
__d("QueriesHistory", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h) { | |
"use strict"; | |
this.$QueriesHistory0 = h; | |
this.reset(); | |
} | |
g.prototype.getQueries = function() { | |
"use strict"; | |
return this.$QueriesHistory1; | |
}; | |
g.prototype.getCurrentLength = function() { | |
"use strict"; | |
return this.$QueriesHistory2; | |
}; | |
g.prototype.add = function(h) { | |
"use strict"; | |
this.$QueriesHistory1.push(h); | |
this.$QueriesHistory2 += h.length; | |
while (this.$QueriesHistory1.length !== 0 && this.$QueriesHistory2 > this.$QueriesHistory0) { | |
var i = this.$QueriesHistory1.shift(); | |
this.$QueriesHistory2 -= i.length; | |
} | |
}; | |
g.prototype.reset = function() { | |
"use strict"; | |
this.$QueriesHistory2 = 0; | |
this.$QueriesHistory1 = []; | |
}; | |
e.exports = g; | |
}, null); |
/*!CK:687634152!*/ /*1438697698,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["kAYlU"]); | |
} | |
__d("CommentsPluginSentryAction", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
CONFIRM_POST_TO_PROFILE: "confirm_post_to_profile" | |
}; | |
}, null); | |
__d("ComposedBlockType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
UNSTYLED: 0, | |
PARAGRAPH: 1, | |
UNORDERED_LIST_ITEM: 2, | |
ORDERED_LIST_ITEM: 3, | |
BLOCKQUOTE: 4, | |
HEADER_ONE: 5, | |
HEADER_TWO: 6, | |
CODE: 7, | |
MEDIA: 8, | |
PULLQUOTE: 9 | |
}; | |
}, null); | |
__d("ComposedEntityMutability", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
MUTABLE: 0, | |
IMMUTABLE: 1, | |
SEGMENTED: 2 | |
}; | |
}, null); | |
__d("ComposedEntityType", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
MENTION: 0, | |
LINK: 1, | |
IMAGE: 2, | |
VIDEO: 3, | |
EMOTICON: 4, | |
TOKEN: 5, | |
HASHTAG: 6, | |
IMPLICIT_LINK: 7 | |
}; | |
}, null); | |
__d("ComposedInlineStyle", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
NONE: 0, | |
BOLD: 1, | |
ITALIC: 2, | |
UNDERLINE: 4, | |
CODE: 8, | |
STRIKETHROUGH: 16, | |
SUBSCRIPT: 32, | |
SUPERSCRIPT: 64 | |
}; | |
}, null); | |
__d("ComposedLinkEntityProperties", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
URL: "url", | |
SHIMMED_URL: "shimmedURL" | |
}; | |
}, null); | |
__d("DeveloperCommentsModerationSource", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
APP: "app", | |
URL: "url" | |
}; | |
}, null); | |
__d("OpenIDRequest", ["AsyncRequest", "AsyncSignal", "URI", "UserAgent_DEPRECATED", "PHPQuerySerializer", "coalesce", "createArrayFromMixed", "errorCode"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
function o() { | |
var p = new g().setReadOnly(true).setHandler(this.asyncResponseHandler.bind(this)).setErrorHandler(this.asyncErrorHandler.bind(this)); | |
Object.assign(this, { | |
openidUrl: null, | |
requestId: o.maxRequestId++, | |
successResponseHandler: null, | |
cancelHandler: null, | |
intermediateHandler: null, | |
immediateMode: false, | |
useExtensions: true, | |
thirdPartyLogin: false, | |
popupWindow: null, | |
asyncRequest: p, | |
retryCount: 0 | |
}); | |
o.requests[this.requestId] = this; | |
} | |
o.getRequestById = function(p) { | |
return o.requests[p]; | |
}; | |
o.prototype.setOpenIDUrl = function(p) { | |
this.openidUrl = p; | |
return this; | |
}; | |
o.prototype.setSuccessHandler = function(p) { | |
this.successResponseHandler = p; | |
return this; | |
}; | |
o.prototype.setErrorHandler = function(p) { | |
this.errorHandler = p; | |
return this; | |
}; | |
o.prototype.setCancelHandler = function(p) { | |
this.cancelHandler = p; | |
return this; | |
}; | |
o.prototype.setImmediateMode = function(p) { | |
this.immediateMode = p; | |
return this; | |
}; | |
o.prototype.setUseExtensions = function(p) { | |
this.useExtensions = p; | |
return this; | |
}; | |
o.prototype.setIntermediateHandler = function(p) { | |
this.intermediateHandler = p; | |
return this; | |
}; | |
o.prototype.setThirdPartyLogin = function(p) { | |
this.thirdPartyLogin = p; | |
return this; | |
}; | |
o.prototype.send = function() { | |
if (!this.openidUrl) throw "openidUrl is a required parameter. Call setOpenIDUrl()"; | |
var p = this.calculateRedirectUrl(); | |
if (!p) { | |
this.logMetrics('redirectUrlNotFound'); | |
return; | |
} | |
if (this.immediateMode) { | |
this.createHiddenIframe(p); | |
} else { | |
if (this.popupWindow) throw "OpenID popup is already in progress"; | |
this.showPopup(p); | |
} | |
this.logMetrics('requestSent'); | |
}; | |
o.prototype.calculateRedirectUrl = function(p) { | |
var q = this.immediateMode ? 'checkid_immediate' : 'checkid_setup', | |
r = { | |
'openid.mode': q | |
}, | |
s; | |
if (!o.cache[this.openidUrl]) return null; | |
s = o.cache[this.openidUrl].url; | |
var t = new i(new i(s).getQueryData()['openid.return_to']); | |
t.addQueryData({ | |
context: o.context, | |
request_id: this.requestId | |
}); | |
r['openid.return_to'] = t.toString(); | |
r.third_party_login = this.thirdPartyLogin; | |
return new i(s).addQueryData(r).getQualifiedURI(); | |
}; | |
o.prototype.createHiddenIframe = function(p) { | |
var q = 'openid_request_' + this.requestId, | |
r = document.body.appendChild(document.createElement('div')), | |
s = function() { | |
r.innerHTML = ('<iframe name="' + q + '"' + ' src="' + p.toString() + '"' + ' scrolling="no" ' + ' frameborder="0" class="hidden_elem"></iframe>'); | |
}; | |
if (j.ie()) { | |
r.innerHTML = '<iframe src="javascript:false"></iframe>'; | |
setTimeout(s, 0); | |
} else s(); | |
}; | |
o.prototype.showPopup = function(p) { | |
var q; | |
if (o.cache[this.openidUrl]) q = o.cache[this.openidUrl].popup_dimensions; | |
if (!q || !q.height || !q.width) q = { | |
height: '580', | |
width: '790' | |
}; | |
var r = { | |
x: l(window.screenX, window.screenLeft), | |
y: l(window.screenY, window.screenTop), | |
width: l(window.outerWidth, document.body.clientWidth), | |
height: l(window.outerHeight, document.body.clientHeight) | |
}, | |
s = r.x + ((r.width - q.width) / 2), | |
t = r.y + ((r.height - q.height) / 2), | |
u = ["location=yes", "scrollbars=1", "left=" + s, "top=" + t, "resizable=yes", "height=" + q.height, "width=" + q.width].join(","); | |
this.popupWindow = window.open(p.toString(), '_blank', u); | |
this.popupPollInterval = setInterval(this.pollPopupWindow.bind(this), 100); | |
this.popupWindow.focus(); | |
}; | |
o.prototype.pollPopupWindow = function() { | |
if (!(this.popupPollInterval && this.popupWindow)) return; | |
if (this.popupWindow.closed) { | |
clearInterval(this.popupPollInterval); | |
this.cancel(); | |
} | |
}; | |
o.prototype.closePopupIfOpen = function() { | |
if (this.popupWindow) { | |
if (this.popupPollInterval) clearInterval(this.popupPollInterval); | |
this.popupWindow.close(); | |
} | |
this.popupWindow = null; | |
}; | |
o.prototype.cancel = function() { | |
this.closePopupIfOpen(); | |
if (this.cancelHandler) this.cancelHandler(); | |
this.logMetrics('requestCanceled'); | |
}; | |
o.prototype.logMetrics = function(p) { | |
new h('/ajax/openid/metrics.php', { | |
metric: p, | |
immediate: this.immediateMode, | |
context: o.context, | |
openid_url: this.openidUrl | |
}).send(); | |
}; | |
o.prototype.triggerCompleteAuthAsync = function(p) { | |
if (p.charAt(0) == '?' || p.charAt(0) == '&') p = p.substr(1); | |
var q = k.deserialize(p); | |
this.closePopupIfOpen(); | |
if (q['openid.mode'] == 'cancel') { | |
this.cancel(); | |
return; | |
} | |
if (this.intermediateHandler) this.intermediateHandler(); | |
this.asyncRequest.setData({ | |
openid_params: q | |
}).send(); | |
}; | |
o.prototype.asyncResponseHandler = function(p) { | |
var q = p.getPayload(); | |
if (this.successResponseHandler) this.successResponseHandler(q); | |
this.closePopupIfOpen(); | |
}; | |
o.prototype.cleanHandleResponse = function(p) { | |
if (p.css) p.css = m(p.css); | |
this.asyncRequest.handleResponse(p); | |
}; | |
o.prototype.asyncErrorHandler = function(p) { | |
this.closePopupIfOpen(); | |
if (p.error == 1428010 || p.error == 1428011) { | |
this.cancel(); | |
return; | |
} | |
if (this.errorHandler) this.errorHandler(p); | |
}; | |
o.prototype.retry = function() { | |
++this.retryCount; | |
this.requestId = o.maxRequestId++; | |
this.send(); | |
}; | |
o.prototype.setProviderCache = function(p) { | |
o.cache = p; | |
return this; | |
}; | |
o.cache = {}; | |
o.requests = []; | |
o.maxRequestId = 0; | |
o.context = 'default'; | |
e.exports = o; | |
}, null); | |
__d("WidgetArbiter", ["createArrayFromMixed"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
_findSiblings: function() { | |
if (h._siblings) return; | |
h._siblings = []; | |
for (var i = parent.frames.length - 1; i >= 0; i--) try { | |
if (parent.frames[i] && parent.frames[i].Arbiter && parent.frames[i].Arbiter.inform) h._siblings.push(parent.frames[i].Arbiter); | |
} catch (j) {} | |
}, | |
inform: function() { | |
h._findSiblings(); | |
var i = g(arguments); | |
h._siblings.forEach(function(j) { | |
j.inform.apply(j, i); | |
}); | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("CommentAdminPanelController", ["Arbiter", "AsyncRequest", "Button", "ChannelConstants", "CSS", "DOM", "Event", "Toggler", "URI", "Vector", "$", "ge", "XD", "MultiLoginPopup"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) { | |
b.__markCompiled && b.__markCompiled(); | |
var s = b('XD').UnverifiedXD, | |
t = function(u) { | |
Object.assign(this, { | |
locale: u.locale, | |
channel: u.channel, | |
controllerID: u.controllerID, | |
commentIDs: u.commentIDs, | |
domIDs: u.domIDs, | |
duplicateComments: [], | |
fetchMoreCommentsIsPending: {}, | |
blacklistedActors: u.blacklistedActors, | |
actorToCommentInfoMap: u.actorToCommentIDMap, | |
commentInfoMap: u.commentInfoMap, | |
inAggregatedView: u.inAggregatedView, | |
inModerationQueue: u.inModerationQueue, | |
inContextualDialog: u.inContextualDialog, | |
isTopLevelCommentPollingEnabled: false, | |
loggedIn: u.loggedIn, | |
newestCommentTimestamp: u.newestCommentTimestamp, | |
realTimePollingParams: {}, | |
userOwnsPages: u.userOwnsPages, | |
recentlyBlacklistedActors: u.blacklistedActors | |
}); | |
g.subscribe(j.getArbiterType('comments_plugin_new_post'), function(v, w) { | |
if (w.obj.target === this.realTimePollingParams.target) { | |
if (r(w.obj.comment_element_id)) return; | |
var x = Object.assign({}, this.realTimePollingParams); | |
x.post_fbid = w.obj.post_fbid; | |
var y = w.obj.parent_comment_id; | |
if (y) { | |
var z = r(y); | |
if (!z) return; | |
var aa = l.scry(z, '.fbFeedbackPager.uiMorePager'); | |
if (aa.length > 0) return; | |
x.parent_comment_id = y; | |
x.is_reply_thread = true; | |
} else { | |
if (!this.isTopLevelCommentPollingEnabled) return; | |
x.is_reply_thread = false; | |
} | |
this.pollForComments(x); | |
} | |
}.bind(this)); | |
this.controlledRegion = q(this.controllerID); | |
this.attachClickHandlers(); | |
if (this.inModerationQueue) this.registerModeratorQueueHandlers(true); | |
}; | |
Object.assign(t, { | |
allControllers: {}, | |
mainController: null, | |
contextualControllers: {}, | |
initController: function(u) { | |
var v = new t(u), | |
w = u.controllerID; | |
t.allControllers[w] = v; | |
if (v.inContextualDialog) { | |
t.contextualControllers[w] = v; | |
} else t.mainController = v; | |
}, | |
syncController: function(u, v) { | |
var w = t.allControllers[u]; | |
w.attachClickHandlers(); | |
if (!w.isControllingModerationQueue()) return; | |
w.deselectComments(v); | |
w.registerModeratorQueueHandlers(false); | |
w.synchronizeModeratorQueueUI(); | |
}, | |
resetController: function(u) { | |
var v = t.allControllers[u]; | |
v.resetController(); | |
}, | |
appendComments: function(u, v, w) { | |
var x = t.allControllers[u]; | |
x.appendComments(v, w); | |
}, | |
prependComments: function(u, v, w) { | |
var x = t.allControllers[u]; | |
x.prependComments(v, w); | |
}, | |
updateController: function(u, v, w, x, y, z, aa) { | |
var ba = t.allControllers[u]; | |
ba.updateController(v, w, x, y, z, aa); | |
if (!t.mainController.loggedIn) b('MultiLoginPopup').reattachLoginInterceptors(); | |
if (!ba.isControllingModerationQueue()) return; | |
ba.registerModeratorQueueHandlers(false); | |
ba.synchronizeModeratorQueueUI(); | |
}, | |
updatePollingParamsCommentas: function(u, v) { | |
var w = t.allControllers[u]; | |
w.updatePollingParamsCommentas(v); | |
}, | |
registerMoreCommentsLinkHandler: function(u, v) { | |
var w = t.allControllers[u]; | |
w.registerMoreCommentsLinkHandler(v); | |
}, | |
replaceContentMaybe: function(u, v) { | |
var w = l.scry(document.documentElement, u)[0]; | |
if (w) l.replace(w, v); | |
}, | |
notifyCommentCreated: function(u) { | |
if (!t.mainController.channel) return; | |
s.send({ | |
type: 'commentCreated', | |
href: u.href, | |
parentCommentID: u.parentCommentID, | |
commentID: u.commentID, | |
message: u.message | |
}); | |
}, | |
notifyCommentRemoved: function(u) { | |
if (!t.mainController.channel) return; | |
s.send({ | |
type: 'commentRemoved', | |
href: u.href, | |
commentID: u.commentID | |
}); | |
}, | |
markAsShowingAllReplies: function(u) { | |
var v = u + ' a.fbUpDownVoteOption', | |
w = l.scry(document.documentElement, v), | |
x = u + ' li.fbUpDownVoteOption a.itemAnchor', | |
y = l.scry(document.documentElement, x), | |
z = w.concat(y); | |
for (var aa = 0; aa < z.length; aa++) { | |
var ba = z[aa], | |
ca = new o(ba.getAttribute('ajaxify')); | |
ca.addQueryData({ | |
show_all_replies: 1 | |
}); | |
ba.setAttribute('ajaxify', ca.toString()); | |
} | |
}, | |
setLoggedIn: function(u) { | |
t.mainController.loggedIn = u; | |
}, | |
blacklistChangeListener: function(u, v, w) { | |
var x = q(v); | |
m.listen(u, 'change', function() { | |
if (u.options[u.selectedIndex].value == w) { | |
k.show(x); | |
} else k.hide(x); | |
}); | |
} | |
}); | |
Object.assign(t.prototype, { | |
isControllingModerationQueue: function() { | |
var u = this == t.mainController && this.inModerationQueue; | |
return u; | |
}, | |
resetController: function() { | |
this.commentIDs = []; | |
this.domIDs = []; | |
}, | |
updateController: function(u, v, w, x, y, z) { | |
u.forEach(function(ba) { | |
this.commentIDs.push(ba); | |
}, this); | |
v.forEach(function(ba) { | |
this.domIDs.push(ba); | |
}, this); | |
Object.assign(this.blacklistedActors, x); | |
for (var aa in y) { | |
if (!this.actorToCommentInfoMap[aa]) this.actorToCommentInfoMap[aa] = []; | |
y[aa].forEach(function(ba) { | |
this.actorToCommentInfoMap[aa].push(ba); | |
}, this); | |
} | |
this.newestCommentTimestamp = Math.max(this.newestCommentTimestamp, w); | |
Object.assign(this.commentInfoMap, z); | |
this.attachClickHandlers(); | |
}, | |
updatePollingParamsCommentas: function(u) { | |
this.realTimePollingParams.commentas = u; | |
}, | |
attachClickHandlers: function() { | |
for (var u = 0; u < this.domIDs.length; u++) { | |
var v = 'li[id="' + this.domIDs[u] + '"]', | |
w = l.scry(this.controlledRegion, v); | |
if (w.length === 0) continue; | |
var x = w[0], | |
y = l.scry(x, 'a.uiCloseButton'); | |
m.listen(x, 'mouseleave', this.closeStickyMenuFlyouts.bind(this, y)); | |
var z = l.scry(x, '.fbModerateDropdownContainer'); | |
if (z.length > 0) { | |
var aa = z[0], | |
ba = l.find(aa, '.fbModerateDropdownLink'); | |
m.listen(ba, 'mouseover', function(ka, event) { | |
k.addClass(ka, 'fbUnderlineText'); | |
}.bind(null, ba)); | |
m.listen(ba, 'mouseout', function(ka, event) { | |
k.removeClass(ka, 'fbUnderlineText'); | |
}.bind(null, ba)); | |
var ca = l.find(aa, '.fbModerationDropdownList'); | |
m.listen(ba, 'click', this.exposeDropDownMenu.bind(this, ba, ca)); | |
m.listen(ca.parentNode, 'mouseleave', this.concealDropDownMenu.bind(this, ba, ca)); | |
this.attachDropDownHandlers(x, this.commentIDs[u], ca); | |
} | |
var da = this.commentInfoMap[this.commentIDs[u]].actor, | |
ea = !!this.recentlyBlacklistedActors[da]; | |
if (ea) { | |
var fa = l.scry(x, '.fbUndoBlacklistLink'); | |
if (fa.length > 0) { | |
var ga = fa[0]; | |
m.listen(ga, 'click', this.toggleBlackListAndSync.bind(this, this.commentIDs[u])); | |
} | |
} | |
} | |
var ha = l.scry(this.controlledRegion, '.fbReplyButton'), | |
ia = l.scry(this.controlledRegion, '.fbReplyAfterLoginButton'); | |
for (var ja = 0; ja < ha.length; ja++) | |
if (this.loggedIn) { | |
k.show(ha[ja]); | |
k.hide(ia[ja]); | |
} else { | |
k.hide(ha[ja]); | |
k.show(ia[ja]); | |
} | |
}, | |
closeStickyMenuFlyouts: function(u, event) { | |
n.hide(); | |
for (var v = 0; v < u.length; v++) u[v].blur(); | |
}, | |
attachDropDownHandlers: function(u, v, w) { | |
var x = l.scry(w, '.fbBanUser'); | |
if (x.length > 0) { | |
var y = x[0], | |
z = l.find(y, '^.fbFeedbackPost'); | |
if (z.id.startsWith(v)) m.listen(y, 'click', this.toggleBlackListAndSync.bind(this, v)); | |
} | |
}, | |
exposeDropDownMenu: function(u, v, event) { | |
if (k.shown(v)) return this.concealDropDownMenu(u, v, event); | |
m.stop(event); | |
k.show(v); | |
v.focus(); | |
u.blur(); | |
var w = l.find(document.documentElement, '.commentContent'), | |
x = p.getElementPosition(v).y + p.getElementDimensions(v).y - p.getElementDimensions(w).y; | |
if (x > 0) { | |
x = x + 2; | |
this.menuBuffer = l.create('div', { | |
className: 'menuBuffer', | |
style: { | |
height: x + 'px' | |
} | |
}); | |
l.appendContent(w, this.menuBuffer); | |
} | |
return false; | |
}, | |
concealDropDownMenu: function(u, v, event) { | |
m.stop(event); | |
k.removeClass(u, 'fbUnderlineText'); | |
k.hide(v); | |
u.blur(); | |
if (this.menuBuffer) { | |
l.remove(this.menuBuffer); | |
delete this.menuBuffer; | |
} | |
return false; | |
}, | |
registerMoreCommentsLinkHandler: function(u) { | |
var v = u.pager_id; | |
if (!r(v)) return; | |
var w = q(v); | |
m.listen(w, 'click', this.fetchMoreComments.bind(this, u, w)); | |
}, | |
deselectComments: function(u) { | |
for (var v = 0; v < u.length; v++) delete this.selectedCommentsMap[u[v]]; | |
}, | |
registerModeratorQueueHandlers: function(u) { | |
if (u) this.selectedCommentsMap = {}; | |
this.selectableComments = this.findSelectableComments(); | |
this.selectableCheckboxes = []; | |
this.selectAllCheckBoxes = l.scry(this.controlledRegion, '.fbSelectAllCheckbox'); | |
this.approveButtons = l.scry(this.controlledRegion, '.fbApproveButton'); | |
this.removeButtons = l.scry(this.controlledRegion, '.fbRemoveButton'); | |
for (var v = 0; v < this.selectableComments.length; v++) { | |
var w = this.selectableComments[v].id, | |
x = !!this.selectedCommentsMap[w]; | |
this.setCommentSelection(this.selectableComments[v], x); | |
var y = l.find(this.selectableComments[v], '.fbCommentCheckbox'); | |
m.listen(y, 'click', this.toggleCommentSelection.bind(this)); | |
m.listen(this.selectableComments[v], 'click', this.toggleCommentSelection.bind(this)); | |
y.checked = x; | |
this.selectableCheckboxes.push(y); | |
} | |
for (var z = 0; z < this.selectAllCheckBoxes.length; z++) { | |
this.selectAllCheckBoxes[z].checked = false; | |
this.selectAllCheckBoxes[z].disabled = this.selectableComments.length === 0; | |
m.listen(this.selectAllCheckBoxes[z], 'click', this.toggleSelectAllCheckbox.bind(this, this.selectAllCheckBoxes[z])); | |
} | |
for (var aa = 0; aa < this.approveButtons.length; aa++) m.listen(this.approveButtons[aa], 'click', this.setBulkPrivacy.bind(this, false)); | |
for (var ba = 0; ba < this.removeButtons.length; ba++) m.listen(this.removeButtons[ba], 'click', this.setBulkPrivacy.bind(this, true)); | |
}, | |
findSelectableComments: function() { | |
var u = l.scry(this.controlledRegion, '.fbTopLevelComment'), | |
v = []; | |
for (var w = 0; w < u.length; w++) | |
if ((l.scry(u[w], '.fbCommentCheckbox').length === 1) && (l.scry(u[w], '.fbCommentOverlay').length === 0)) v.push(u[w]); | |
return v; | |
}, | |
toggleCommentSelection: function(event) { | |
var u = { | |
a: true | |
}, | |
v = event.getTarget(), | |
w = v.tagName.toLowerCase(), | |
x = v.parentNode.tagName.toLowerCase(); | |
if (u[w] || u[x]) return; | |
var y = k.hasClass(v, 'fbFeedbackPost') ? v : l.find(v, '^.fbFeedbackPost'), | |
z = this.commentIsSelected(y), | |
aa = !z; | |
this.setCommentSelection(y, aa); | |
this.synchronizeModeratorQueueUI(); | |
if (k.hasClass(v, 'fbCommentCheckbox')) m.stop(event); | |
}, | |
commentIsSelected: function(u) { | |
return k.hasClass(u, 'fbCommentSelected'); | |
}, | |
setCommentSelection: function(u, v) { | |
if (v) { | |
this.selectComment(u); | |
} else this.deselectComment(u); | |
}, | |
selectComment: function(u) { | |
k.addClass(u, 'fbCommentSelected'); | |
this.selectedCommentsMap[u.id] = true; | |
l.find(u, '.fbCommentCheckbox').checked = true; | |
}, | |
deselectComment: function(u) { | |
k.removeClass(u, 'fbCommentSelected'); | |
delete this.selectedCommentsMap[u.id]; | |
l.find(u, '.fbCommentCheckbox').checked = false; | |
}, | |
toggleSelectAllCheckbox: function(u, event) { | |
m.stop(event); | |
var v = u.checked; | |
for (var w = 0; w < this.selectableComments.length; w++) { | |
this.setCommentSelection(this.selectableComments[w], u.checked); | |
this.selectableCheckboxes[w].checked = v; | |
} | |
this.synchronizeBulkModerationCheckboxes(v); | |
this.synchronizeBulkModerationButtons(v); | |
}, | |
synchronizeModeratorQueueUI: function() { | |
var u = 0; | |
for (var v = 0; v < this.selectableCheckboxes.length; v++) | |
if (this.selectableCheckboxes[v].checked) u++; | |
var w = this.selectableCheckboxes.length > 0 && u == this.selectableCheckboxes.length; | |
this.synchronizeBulkModerationCheckboxes(w); | |
this.synchronizeBulkModerationButtons(u > 0); | |
}, | |
synchronizeBulkModerationCheckboxes: function(u) { | |
for (var v = 0; v < this.selectAllCheckBoxes.length; v++) this.selectAllCheckBoxes[v].checked = u; | |
}, | |
synchronizeBulkModerationButtons: function(u) { | |
for (var v = 0; v < this.approveButtons.length; v++) i.setEnabled(this.approveButtons[v], u); | |
for (var w = 0; w < this.removeButtons.length; w++) i.setEnabled(this.removeButtons[w], u); | |
}, | |
setBulkPrivacy: function(u, event) { | |
m.stop(event); | |
this.synchronizeBulkModerationButtons(false); | |
var v = []; | |
for (var w in this.selectedCommentsMap) v.push(w); | |
var x = { | |
is_private: u, | |
in_moderation_queue: true, | |
comment_ids: v, | |
uniqids: v, | |
controller_id: this.controllerID, | |
locale: this.locale, | |
owns_pages: this.userOwnsPages, | |
in_aggregated_view: this.inAggregatedView, | |
in_contextual_dialog: this.inContextualDialog | |
}; | |
new h().setURI('/ajax/connect/comments/set_bulk_private.php').setData(x).send(); | |
return false; | |
}, | |
toggleBlackListAndSync: function(u, event) { | |
m.stop(event); | |
var v = this.commentInfoMap[u].actor, | |
w = { | |
blacklist: !this.blacklistedActors[v], | |
in_moderation_queue: this.inModerationQueue, | |
comment_id: u, | |
other_comment_ids: this.getOtherCommentsByActor(v, u), | |
uniqid: u, | |
controller_id: this.controllerID, | |
locale: this.locale, | |
owns_pages: this.userOwnsPages, | |
in_aggregated_view: this.inAggregatedView, | |
in_contextual_dialog: this.inContextualDialog | |
}; | |
new h().setURI('/ajax/connect/comments/set_blacklist.php').setData(w).setHandler(function(x) { | |
this.blacklistedActors[v] = !this.blacklistedActors[v]; | |
if (this.blacklistedActors[v]) { | |
this.recentlyBlacklistedActors[v] = true; | |
} else delete this.recentlyBlacklistedActors[v]; | |
}.bind(this)).send(); | |
return false; | |
}, | |
getOtherCommentsByActor: function(u, v) { | |
return this.actorToCommentInfoMap[u].filter(function(w) { | |
return w != v; | |
}); | |
}, | |
fetchMoreComments: function(u, v, event) { | |
m.kill(event); | |
k.addClass(v, 'async_saving'); | |
if (this.fetchMoreCommentsIsPending[u.pager_id] === true) return; | |
this.fetchMoreCommentsIsPending[u.pager_id] = true; | |
var w = { | |
is_reply_thread: false, | |
in_moderation_queue: false, | |
view_as_moderator: false | |
}; | |
Object.assign(w, u); | |
var x = l.scry(q(w.controller_id), this.getCommentsSelector(w)); | |
x = x.concat(l.scry(q(w.controller_id), this.getCollapsedCommentsSelector(w))); | |
var y = 0, | |
z = 0; | |
for (var aa = 0; aa < x.length; aa++) | |
if (!k.hasClass(x[aa], 'fbCommentIgnored')) | |
if (k.hasClass(x[aa], 'fbCommentHidden')) { | |
z++; | |
} else y++; | |
if (w.is_reply_thread) w.offset = y; | |
w.hidden_offset = z; | |
if (!w.aggregate_view) delete w.aggregate_view; | |
if (!w.comment_id) delete w.comment_id; | |
if (!w.is_reply_thread) w.comment_ids = this.commentIDs; | |
if (!w.commentas) { | |
var ba = t.allControllers[w.controller_id]; | |
w.commentas = ba.realTimePollingParams.commentas; | |
} | |
new h().setURI('/ajax/connect/feedback.php').setReadOnly(true).setData(w).setHandler(function(ca) { | |
this.fetchMoreCommentsIsPending[u.pager_id] = false; | |
}.bind(this)).send(); | |
}, | |
getCommentsSelector: function(u) { | |
var v = u.is_reply_thread ? 'li.fbCommentReply' : 'li.fbTopLevelComment'; | |
if (u.controller_id != u.uniqid) v = 'div[id="' + u.uniqid + '"] ' + v; | |
return v; | |
}, | |
getCollapsedCommentsSelector: function(u) { | |
var v = u.is_reply_thread ? 'div.fbCommentReply' : 'div.fbTopLevelComment'; | |
if (u.controller_id != u.uniqid) v = 'div[id="' + u.uniqid + '"] ' + v; | |
return v; | |
}, | |
getRecentlyBlacklistedActors: function() { | |
var u = []; | |
for (var v in this.recentlyBlacklistedActors) u.push(v); | |
return u; | |
}, | |
appendComments: function(u, v) { | |
var w = r(u); | |
if (!w) return; | |
var x = l.scry(w, '.fbFeedbackReplies')[0]; | |
if (!x) return; | |
l.appendContent(x, v); | |
}, | |
prependComments: function(u, v) { | |
var w = l.scry(document.documentElement, u)[0]; | |
if (!w) return; | |
var x = v.getNodes(), | |
y = []; | |
for (var z = x.length; z-- > 0;) { | |
var aa = { | |
id: l.getID(x[z]), | |
element: x[z] | |
}; | |
y.push(aa); | |
var ba = r(aa.id); | |
if (ba) { | |
k.hide(aa.element); | |
this.duplicateComments.push(aa.element); | |
for (var ca = 0; ca < y.length; ++ca) l.insertAfter(ba, y[ca].element); | |
y = []; | |
} | |
} | |
for (z = 0; z < y.length; ++z) l.prependContent(w, y[z].element); | |
setTimeout(this.removeDuplicateComments.bind(this), 0); | |
}, | |
removeDuplicateComments: function() { | |
for (var u = 0; u < this.duplicateComments.length; ++u) l.remove(this.duplicateComments[u]); | |
this.duplicateComments = []; | |
}, | |
pollForComments: function(u) { | |
var v = { | |
locale: this.locale | |
}; | |
Object.assign(v, u); | |
if (!v.is_reply_thread) v.comment_ids = this.commentIDs; | |
v.newest_comment_timestamp = this.newestCommentTimestamp; | |
var w = this.handlePollResponse.bind(this), | |
x = this.handlePollError.bind(this), | |
y = this.handlePollFinally.bind(this); | |
new h().setURI('/plugins/comments/poll').setReadOnly(true).setData(v).setMethod('GET').setHandler(w).setErrorHandler(x).setFinallyHandler(y).send(); | |
}, | |
handlePollResponse: function(u) {}, | |
handlePollError: function(u) {}, | |
handlePollFinally: function(u) {} | |
}); | |
e.exports = window.CommentAdminPanelController || t; | |
}, null); | |
__d("SelectionState", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g, | |
i = h.Record, | |
j = { | |
anchorKey: '', | |
anchorOffset: 0, | |
focusKey: '', | |
focusOffset: 0, | |
isBackward: false, | |
hasFocus: false | |
}, | |
k = i(j); | |
for (var l in k) | |
if (k.hasOwnProperty(l)) n[l] = k[l]; | |
var m = k === null ? null : k.prototype; | |
n.prototype = Object.create(m); | |
n.prototype.constructor = n; | |
n.__superConstructor__ = k; | |
function n() { | |
if (k !== null) k.apply(this, arguments); | |
} | |
n.prototype.serialize = function() { | |
return ('Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus())); | |
}; | |
n.prototype.getAnchorKey = function() { | |
return this.anchorKey; | |
}; | |
n.prototype.getAnchorOffset = function() { | |
return this.anchorOffset; | |
}; | |
n.prototype.getFocusKey = function() { | |
return this.focusKey; | |
}; | |
n.prototype.getFocusOffset = function() { | |
return this.focusOffset; | |
}; | |
n.prototype.getIsBackward = function() { | |
return this.isBackward; | |
}; | |
n.prototype.getHasFocus = function() { | |
return this.hasFocus; | |
}; | |
n.prototype.hasEdgeWithin = function(o, p, q) { | |
var r = this.getAnchorKey(), | |
s = this.getFocusKey(); | |
if (r === s && r === o) { | |
var t = this.getStartOffset(), | |
u = this.getEndOffset(); | |
return p <= u && t <= q; | |
} | |
if (o !== r && o !== s) return false; | |
var v = o === r ? this.getAnchorOffset() : this.getFocusOffset(); | |
return p <= v && q >= v; | |
}; | |
n.prototype.isCollapsed = function() { | |
return (this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset()); | |
}; | |
n.prototype.getStartKey = function() { | |
return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey(); | |
}; | |
n.prototype.getStartOffset = function() { | |
return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset(); | |
}; | |
n.prototype.getEndKey = function() { | |
return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey(); | |
}; | |
n.prototype.getEndOffset = function() { | |
return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset(); | |
}; | |
e.exports = n; | |
}, null); | |
__d("MentionResultsPropTypes", ["React", "SearchableEntry", "SelectionState"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = { | |
viewID: k.string.isRequired, | |
selection: k.instanceOf(i).isRequired, | |
contextComponent: k.object.isRequired, | |
mentionableEntries: k.array.isRequired, | |
highlightedMentionable: k.instanceOf(h), | |
onMentionSelect: k.func.isRequired, | |
onMentionHighlight: k.func.isRequired, | |
onMentionRenderHighlight: k.func.isRequired | |
}; | |
e.exports = l; | |
}, null); | |
__d("MentionsLayer.react", ["Bootloader", "Locale", "MentionResultsPropTypes", "React", "areEqual"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = j, | |
m = l.PropTypes, | |
n = false, | |
o = h.isRTL(), | |
p, q, r, s, t = 5, | |
u = j.createClass({ | |
displayName: "MentionsLayer", | |
propTypes: Object.assign({}, i, { | |
typeaheadView: m.func.isRequired, | |
typeaheadViewProps: m.object, | |
autoflip: m.bool, | |
position: m.oneOf(['above', 'below']) | |
}), | |
getInitialState: function() { | |
return { | |
bootloaded: n | |
}; | |
}, | |
componentWillMount: function() { | |
if (!this.state.bootloaded) v(function() { | |
this.isMounted() && this.setState({ | |
bootloaded: true | |
}); | |
}.bind(this)); | |
}, | |
_onMentionSelect: function(w, x) { | |
x.preventDefault(); | |
this.props.onMentionSelect(w, x); | |
}, | |
shouldComponentUpdate: function(w, x) { | |
return (this.state.bootloaded !== x.bootloaded || !k(this.props.mentionableEntries, w.mentionableEntries) || this.props.highlightedMentionable !== w.highlightedMentionable || this.props.characterOffset !== w.characterOffset); | |
}, | |
render: function() { | |
if (!this.state.bootloaded) return null; | |
var w = this.props.mentionableEntries, | |
x = this.props.selection, | |
y = (x.isCollapsed() && x.getHasFocus() && w && w.length), | |
z = null, | |
aa = this.props.typeaheadViewProps, | |
ba = false, | |
ca = false; | |
if (aa && aa.positionAtContext) { | |
ba = true; | |
ca = true; | |
} else if (y) z = s(this.props.characterOffset, o); | |
var da = {}; | |
if (this.props.autoflip) { | |
da.ContextualLayerAutoFlip = q; | |
da.ContextualLayerUpdateOnScroll = r; | |
} | |
var ea = this.props.typeaheadView; | |
return (j.createElement(p, { | |
shown: y, | |
context: this.props.contextComponent, | |
contextBounds: z, | |
containerWidthMatchContext: ca, | |
offsetY: t, | |
position: this.props.position || 'below', | |
behaviors: da | |
}, j.createElement(ea, { | |
id: this.props.viewID, | |
viewProps: this.props.typeaheadViewProps, | |
highlightedEntry: this.props.highlightedMentionable, | |
entries: w || [], | |
onSelect: this._onMentionSelect, | |
onHighlight: this.props.onMentionHighlight, | |
onRenderHighlight: this.props.onMentionRenderHighlight | |
}))); | |
} | |
}); | |
function v(w) { | |
g.loadModules(["ContextualLayer.react", "ContextualLayerAutoFlip", "ContextualLayerUpdateOnScroll", "getMentionableRect"], function(x, y, z, aa) { | |
p = x; | |
q = y; | |
r = z; | |
s = aa; | |
n = true; | |
w(); | |
}); | |
} | |
e.exports = u; | |
}, null); | |
__d("ActorBio.react", ["React", "fbt"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = g, | |
j = i.PropTypes, | |
k = g.createClass({ | |
displayName: "ActorBio", | |
propTypes: { | |
stats: j.object.isRequired, | |
preferredTypes: j.array.isRequired | |
}, | |
renderLink: function(l) { | |
return 'url' in l ? g.createElement("a", g.__spread({}, this.props, { | |
href: l.url | |
}), l.name) : g.createElement("span", null, l.name); | |
}, | |
renderItem: function(l, m) { | |
var n; | |
switch (l) { | |
case 'employer': | |
if ('position' in m) { | |
n = h._("\u5728{employer}\u7684{position}", [h.param("position", this.renderLink(m.position)), h.param("employer", this.renderLink(m))]); | |
} else n = h._("{employer}\u54e1\u5de5", [h.param("employer", this.renderLink(m))]); | |
break; | |
case 'mutual_friend': | |
n = h._("{user}\u7684\u670b\u53cb", [h.param("user", this.renderLink(m))]); | |
break; | |
default: | |
return this.renderLink(m); | |
} | |
return g.createElement("span", null, n); | |
}, | |
render: function() { | |
var l = this.props.stats, | |
m = this.props.preferredTypes; | |
for (var n = 0; n < m.length; n++) | |
for (var o = 0; o < m[n].length; o++) { | |
var p = m[n][o]; | |
if (p in l) return this.renderItem(p, l[p]); | |
} | |
return g.createElement("span", null); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("fillArray", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h, i) { | |
var j = new Array(h); | |
for (var k = 0; k < h; k++) j[k] = i; | |
return j; | |
} | |
e.exports = g; | |
}, null); | |
__d("DocumentCompositeDecorator", ["immutable", "fillArray"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = g, | |
j = i.List, | |
k = '.'; | |
function l(o) { | |
this.$DocumentCompositeDecorator0 = o.slice(); | |
} | |
l.prototype.getDecorations = function(o) { | |
var p = h(o.getText().length, null); | |
this.$DocumentCompositeDecorator0.forEach(function(q, r) { | |
var s = 0, | |
t = q.getStrategy(); | |
t(o, function(u, v) { | |
if (m(p, u, v)) { | |
n(p, u, v, r + k + s); | |
s++; | |
} | |
}); | |
}); | |
return j(p); | |
}; | |
l.prototype.getComponentForKey = function(o) { | |
var p = parseInt(o.split(k)[0], 10); | |
return this.$DocumentCompositeDecorator0[p].getComponent(); | |
}; | |
l.prototype.getPropsForKey = function(o) { | |
var p = parseInt(o.split(k)[0], 10); | |
return this.$DocumentCompositeDecorator0[p].getProps(); | |
}; | |
function m(o, p, q) { | |
for (var r = p; r < q; r++) | |
if (o[r] != null) return false; | |
return true; | |
} | |
function n(o, p, q, r) { | |
for (var s = p; s < q; s++) o[s] = r; | |
} | |
e.exports = l; | |
}, null); | |
__d("DocumentDecorator", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h, i, j) { | |
"use strict"; | |
this.$DocumentDecorator0 = h; | |
this.$DocumentDecorator1 = i; | |
this.$DocumentDecorator2 = j || {}; | |
} | |
g.prototype.getStrategy = function() { | |
"use strict"; | |
return this.$DocumentDecorator0; | |
}; | |
g.prototype.getComponent = function() { | |
"use strict"; | |
return this.$DocumentDecorator1; | |
}; | |
g.prototype.getProps = function() { | |
"use strict"; | |
return this.$DocumentDecorator2; | |
}; | |
e.exports = g; | |
}, null); | |
__d("DocumentEntityInstance", ["ComposedEntityMutability", "ComposedEntityType", "arrayContains", "getObjectValues", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = j(h), | |
m = j(g); | |
function n(o, p, q) { | |
"use strict"; | |
k(i(l, o)); | |
k(i(m, p)); | |
this.$DocumentEntityInstance0 = o; | |
this.$DocumentEntityInstance1 = p; | |
this.$DocumentEntityInstance2 = q || {}; | |
} | |
n.prototype.getType = function() { | |
"use strict"; | |
return this.$DocumentEntityInstance0; | |
}; | |
n.prototype.getMutability = function() { | |
"use strict"; | |
return this.$DocumentEntityInstance1; | |
}; | |
n.prototype.getData = function() { | |
"use strict"; | |
return this.$DocumentEntityInstance2; | |
}; | |
n.prototype.replaceData = function(o) { | |
"use strict"; | |
this.$DocumentEntityInstance2 = o; | |
}; | |
e.exports = n; | |
}, null); | |
__d("DocumentEntity", ["DocumentEntityInstance", "invariant"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = {}, | |
j = 0, | |
k = { | |
create: function(l, m, n) { | |
return k.add(new g(l, m, n)); | |
}, | |
add: function(l) { | |
i[++j] = l; | |
return j.toString(); | |
}, | |
get: function(l) { | |
var m = i[l]; | |
h(!!m); | |
return m; | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("EmoticonSpan.react", ["DocumentEntity", "React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = h.createClass({ | |
displayName: "EmoticonSpan", | |
render: function() { | |
var l = g.get(this.props.entityKey), | |
m = l.getData(), | |
n = m.type, | |
o = j("_1ty6", 'emoticon_' + n); | |
return (h.createElement("span", { | |
className: o, | |
title: n, | |
"data-offset-key": this.props.offsetKey | |
}, h.createElement("span", { | |
className: "_5ukz" | |
}, this.props.children))); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("HashtagSpan.react", ["React", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g.createClass({ | |
displayName: "HashtagSpan", | |
render: function() { | |
return (g.createElement("span", { | |
"data-offset-key": this.props.offsetKey, | |
className: "_5u8n", | |
spellCheck: false | |
}, this.props.children)); | |
} | |
}); | |
e.exports = i; | |
}, null); | |
__d("MentionSpan.react", ["React", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g.createClass({ | |
displayName: "MentionSpan", | |
render: function() { | |
return (g.createElement("span", { | |
"data-offset-key": this.props.offsetKey, | |
className: "_5u8u", | |
spellCheck: false | |
}, this.props.children)); | |
} | |
}); | |
e.exports = i; | |
}, null); | |
__d("WeakMentionSpan.react", ["React", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g.createClass({ | |
displayName: "WeakMentionSpan", | |
render: function() { | |
return (g.createElement("span", { | |
"data-offset-key": this.props.offsetKey, | |
className: "_whq", | |
spellCheck: false | |
}, this.props.children)); | |
} | |
}); | |
e.exports = i; | |
}, null); | |
__d("getEntityMatcher", ["DocumentEntity"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g.get; | |
function i(j, k) { | |
var l = k || h; | |
return function(m, n) { | |
m.findEntityRanges(function(o) { | |
var p = o.getEntity(); | |
return typeof p === 'string' && j(l(p)); | |
}, n); | |
}; | |
} | |
e.exports = i; | |
}, null); | |
__d("getHashtagMatches", ["getHashtagRegex"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g(); | |
function i(j, k) { | |
var l = j.getText(), | |
m, n, o, p; | |
while ((m = h.exec(l)) !== null) { | |
n = m.index + m[1].length; | |
o = m[2]; | |
p = m[3]; | |
k(n, n + o.length + p.length); | |
} | |
} | |
e.exports = i; | |
}, null); | |
__d("getMentionsInputDecorator", ["ComposedEntityType", "DocumentCompositeDecorator", "DocumentDecorator", "EmoticonSpan.react", "HashtagSpan.react", "MentionSpan.react", "WeakMentionSpan.react", "getEntityMatcher", "getHashtagMatches"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) { | |
b.__markCompiled && b.__markCompiled(); | |
var p = g.EMOTICON, | |
q = g.MENTION, | |
r; | |
function s() { | |
if (!r) r = new h([new i(n(function(t) { | |
var u = t.getData(); | |
return t.getType() === q && u && u.isWeak; | |
}), m), new i(n(function(t) { | |
return t.getType() === q; | |
}), l), new i(n(function(t) { | |
return t.getType() === p; | |
}), j), new i(o, k)]); | |
return r; | |
} | |
e.exports = s; | |
}, null); | |
__d("findRangesImmutable", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g, | |
i = h.List; | |
i; | |
function j(k, l, m, n) { | |
if (!k.size) return; | |
var o = 0; | |
k.reduce(function(p, q, r) { | |
if (!l(p, q)) { | |
if (m(p)) n(o, r); | |
o = r; | |
} | |
return q; | |
}); | |
m(k.last()) && n(o, k.count()); | |
} | |
e.exports = j; | |
}, null); | |
__d("BlockTree", ["immutable", "emptyFunction", "findRangesImmutable"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.List, | |
l = j.Repeat, | |
m = j.Record, | |
n = h.thatReturnsTrue, | |
o = '-', | |
p = { | |
start: null, | |
end: null | |
}, | |
q = m(p), | |
r = { | |
start: null, | |
end: null, | |
decoratorKey: null, | |
leaves: null | |
}, | |
s = m(r), | |
t = { | |
generate: function(w, x) { | |
var y = w.getLength(); | |
if (!y) return k.of(new s({ | |
start: 0, | |
end: 0, | |
decoratorKey: null, | |
leaves: k.of(new q({ | |
start: 0, | |
end: 0 | |
})) | |
})); | |
var z = [], | |
aa = x ? x.getDecorations(w) : k(l(null, y)), | |
ba = w.getCharacterList(); | |
i(aa, v, n, function(ca, da) { | |
z.push(new s({ | |
start: ca, | |
end: da, | |
decoratorKey: aa.get(ca), | |
leaves: u(ba.slice(ca, da).toList(), ca) | |
})); | |
}); | |
return k(z); | |
}, | |
getFingerprint: function(w) { | |
return w.map(function(x) { | |
var y = x.get('decoratorKey'), | |
z = y !== null ? y + '.' + (x.get('end') - x.get('start')) : ''; | |
return '' + z + '.' + x.get('leaves').size; | |
}).join(o); | |
} | |
}; | |
function u(w, x) { | |
var y = [], | |
z = w.map(function(aa) { | |
return aa.getStyle(); | |
}); | |
i(z, v, n, function(aa, ba) { | |
y.push(new q({ | |
start: aa + x, | |
end: ba + x | |
})); | |
}); | |
return k(y); | |
} | |
function v(w, x) { | |
return w === x; | |
} | |
e.exports = t; | |
}, null); | |
__d("UnicodeBidiService", ["UnicodeBidi", "UnicodeBidiDirection", "invariant"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j(k) { | |
if (!k) k = h.getGlobalDir(); | |
i(h.isStrong(k)); | |
this.defaultDir = k; | |
this.reset(); | |
} | |
j.prototype.reset = function() { | |
this.lastDir = this.defaultDir; | |
}; | |
j.prototype.getDirection = function(k) { | |
this.lastDir = g.getDirection(k, this.lastDir); | |
return this.lastDir; | |
}; | |
e.exports = j; | |
}, null); | |
__d("EditorBidiService", ["immutable", "UnicodeBidiService", "nullthrows"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.OrderedMap, | |
l, m = { | |
getDirectionMap: function(n, o) { | |
if (!l) { | |
l = new h(); | |
} else l.reset(); | |
var p = n.getBlockMap(), | |
q = p.valueSeq().map(function(s) { | |
return i(l).getDirection(s.getText()); | |
}), | |
r = k(p.keySeq().zip(q)); | |
return g.is(o, r) ? o : r; | |
} | |
}; | |
e.exports = m; | |
}, null); | |
__d("EditorChangeType", ["keyMirror"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g({ | |
UNDO: true, | |
REDO: true, | |
CHANGE_SELECTION: true, | |
INSERT_CHARACTERS: true, | |
BACKSPACE_CHARACTER: true, | |
DELETE_CHARACTER: true, | |
REMOVE_RANGE: true, | |
SPLIT_BLOCK: true, | |
INSERT_FRAGMENT: true, | |
CHANGE_INLINE_STYLE: true, | |
CHANGE_BLOCK_TYPE: true, | |
APPLY_ENTITY: true, | |
RESET_BLOCK: true, | |
ADJUST_DEPTH: true | |
}); | |
e.exports = h; | |
}, null); | |
__d("EditorState", ["BlockTree", "ComposedInlineStyle", "EditorBidiService", "EditorChangeType", "immutable", "SelectionState"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var m = k, | |
n = m.List, | |
o = m.OrderedMap, | |
p = m.Record, | |
q = m.Stack; | |
n; | |
o; | |
p; | |
var r = { | |
allowUndo: true, | |
currentContent: null, | |
decorator: null, | |
directionMap: null, | |
forceSelection: false, | |
inCompositionMode: false, | |
inlineStyleOverride: null, | |
lastChangeType: null, | |
nativelyRenderedContent: null, | |
redoStack: q(), | |
selection: null, | |
treeMap: null, | |
undoStack: q() | |
}, | |
s = k.Record(r); | |
t.create = function(ca) { | |
ca.treeMap = v(ca.currentContent, ca.decorator); | |
ca.directionMap = i.getDirectionMap(ca.currentContent); | |
return new t(new s(ca)); | |
}; | |
t.set = function(ca, da) { | |
var ea = ca.getImmutable().withMutations(function(fa) { | |
var ga = fa.get('decorator'), | |
ha = ga; | |
if (da.decorator === null) { | |
ha = null; | |
} else if (da.decorator) ha = da.decorator; | |
var ia = da.currentContent || ca.getCurrentContent(); | |
if (ha !== ga) { | |
var ja = fa.get('treeMap'), | |
ka; | |
if (ha && ga) { | |
ka = x(ia.getBlockMap(), ja, ha, ga); | |
} else ka = v(ia, ha); | |
fa.merge({ | |
decorator: ha, | |
treeMap: ka, | |
nativelyRenderedContent: null | |
}); | |
return; | |
} | |
var la = ca.getCurrentContent(); | |
if (ia !== la) fa.set('treeMap', w(ca, ia.getBlockMap(), ha)); | |
fa.merge(da); | |
}); | |
return new t(ea); | |
}; | |
t.prototype.toJS = function() { | |
return this.getImmutable().toJS(); | |
}; | |
t.prototype.getAllowUndo = function() { | |
return this.getImmutable().get('allowUndo'); | |
}; | |
t.prototype.getCurrentContent = function() { | |
return this.getImmutable().get('currentContent'); | |
}; | |
t.prototype.getUndoStack = function() { | |
return this.getImmutable().get('undoStack'); | |
}; | |
t.prototype.getRedoStack = function() { | |
return this.getImmutable().get('redoStack'); | |
}; | |
t.prototype.getSelection = function() { | |
return this.getImmutable().get('selection'); | |
}; | |
t.prototype.getDecorator = function() { | |
return this.getImmutable().get('decorator'); | |
}; | |
t.prototype.isInCompositionMode = function() { | |
return this.getImmutable().get('inCompositionMode'); | |
}; | |
t.prototype.mustForceSelection = function() { | |
return this.getImmutable().get('forceSelection'); | |
}; | |
t.prototype.getNativelyRenderedContent = function() { | |
return this.getImmutable().get('nativelyRenderedContent'); | |
}; | |
t.prototype.getLastChangeType = function() { | |
return this.getImmutable().get('lastChangeType'); | |
}; | |
t.prototype.getInlineStyleOverride = function() { | |
return this.getImmutable().get('inlineStyleOverride'); | |
}; | |
t.prototype.getCurrentInlineStyle = function() { | |
var ca = this.getInlineStyleOverride(); | |
if (ca != null) return ca; | |
var da = this.getCurrentContent(), | |
ea = this.getSelection(); | |
if (ea.isCollapsed()) return z(da, ea); | |
return aa(da, ea); | |
}; | |
t.prototype.getBlockTree = function(ca) { | |
return this.getImmutable().getIn(['treeMap', ca]); | |
}; | |
t.prototype.isAtDocumentStart = function() { | |
var ca = this.getCurrentContent().getBlockMap().first().getKey(); | |
return this.getSelection().hasEdgeWithin(ca, 0, 0); | |
}; | |
t.prototype.isAtDocumentEnd = function() { | |
var ca = this.getCurrentContent(), | |
da = ca.getBlockMap(), | |
ea = da.last(), | |
fa = ea.getLength(); | |
return this.getSelection().hasEdgeWithin(ea.getKey(), fa, fa); | |
}; | |
t.prototype.getDirectionMap = function() { | |
return this.getImmutable().get('directionMap'); | |
}; | |
t.acceptSelection = function(ca, da) { | |
return u(ca, da, false); | |
}; | |
t.forceSelection = function(ca, da) { | |
if (!da.getHasFocus()) da = da.set('hasFocus', true); | |
return u(ca, da, true); | |
}; | |
t.moveSelectionToEnd = function(ca) { | |
var da = ca.getCurrentContent(), | |
ea = da.getLastBlock(), | |
fa = ea.getKey(), | |
ga = ea.getLength(); | |
return t.acceptSelection(ca, new l({ | |
anchorKey: fa, | |
anchorOffset: ga, | |
focusKey: fa, | |
focusOffset: ga, | |
isBackward: false | |
})); | |
}; | |
t.moveFocusToEnd = function(ca) { | |
var da = t.moveSelectionToEnd(ca); | |
return t.forceSelection(da, da.getSelection()); | |
}; | |
t.push = function(ca, da, ea) { | |
if (ca.getCurrentContent() === da) return ca; | |
var fa = ea !== j.INSERT_CHARACTERS, | |
ga = i.getDirectionMap(da, ca.getDirectionMap()); | |
if (!ca.getAllowUndo()) return t.set(ca, { | |
currentContent: da, | |
directionMap: ga, | |
lastChangeType: ea, | |
selection: da.getSelectionAfter(), | |
forceSelection: fa, | |
inlineStyleOverride: null | |
}); | |
var ha = ca.getSelection(), | |
ia = ca.getCurrentContent(), | |
ja = ca.getUndoStack(), | |
ka = da; | |
if (ha !== ia.getSelectionAfter() || y(ca, ea)) { | |
ja = ja.push(ia); | |
ka = ka.set('selectionBefore', ha); | |
} else if (ea === j.INSERT_CHARACTERS || ea === j.BACKSPACE_CHARACTER || ea === j.DELETE_CHARACTER) ka = ka.set('selectionBefore', ia.getSelectionBefore()); | |
return t.set(ca, { | |
currentContent: ka, | |
directionMap: ga, | |
undoStack: ja, | |
redoStack: k.Stack(), | |
lastChangeType: ea, | |
selection: da.getSelectionAfter(), | |
forceSelection: fa, | |
inlineStyleOverride: null | |
}); | |
}; | |
t.undo = function(ca) { | |
if (!ca.getAllowUndo()) return ca; | |
var da = ca.getUndoStack(), | |
ea = da.peek(); | |
if (!ea) return ca; | |
var fa = ca.getCurrentContent(), | |
ga = i.getDirectionMap(ea, ca.getDirectionMap()); | |
return t.set(ca, { | |
currentContent: ea, | |
directionMap: ga, | |
undoStack: da.shift(), | |
redoStack: ca.getRedoStack().push(fa), | |
forceSelection: true, | |
inlineStyleOverride: null, | |
lastChangeType: j.UNDO, | |
nativelyRenderedContent: null, | |
selection: fa.getSelectionBefore() | |
}); | |
}; | |
t.redo = function(ca) { | |
if (!ca.getAllowUndo()) return ca; | |
var da = ca.getRedoStack(), | |
ea = da.peek(); | |
if (!ea) return ca; | |
var fa = ca.getCurrentContent(), | |
ga = i.getDirectionMap(ea, ca.getDirectionMap()); | |
return t.set(ca, { | |
currentContent: ea, | |
directionMap: ga, | |
undoStack: ca.getUndoStack().push(fa), | |
redoStack: da.shift(), | |
forceSelection: true, | |
inlineStyleOverride: null, | |
lastChangeType: j.REDO, | |
nativelyRenderedContent: null, | |
selection: ea.getSelectionAfter() | |
}); | |
}; | |
function t(ca) { | |
this.$EditorState0 = ca; | |
} | |
t.prototype.getImmutable = function() { | |
return this.$EditorState0; | |
}; | |
function u(ca, da, ea) { | |
return t.set(ca, { | |
selection: da, | |
forceSelection: ea, | |
nativelyRenderedContent: null, | |
inlineStyleOverride: null | |
}); | |
} | |
function v(ca, da) { | |
return ca.getBlockMap().map(function(ea) { | |
return g.generate(ea, da); | |
}); | |
} | |
function w(ca, da, ea) { | |
var fa = ca.getCurrentContent().getBlockMap(), | |
ga = ca.getImmutable().get('treeMap'); | |
return ga.merge(da.toSeq().filter(function(ha, ia) { | |
return ha !== fa.get(ia); | |
}).map(function(ha) { | |
return g.generate(ha, ea); | |
})); | |
} | |
function x(ca, da, ea, fa) { | |
return da.merge(ca.toSeq().filter(function(ga) { | |
return (ea.getDecorations(ga) !== fa.getDecorations(ga)); | |
}).map(function(ga) { | |
return g.generate(ga, ea); | |
})); | |
} | |
function y(ca, da) { | |
var ea = ca.getLastChangeType(); | |
return (da !== ea || (da !== j.INSERT_CHARACTERS && da !== j.BACKSPACE_CHARACTER && da !== j.DELETE_CHARACTER)); | |
} | |
function z(ca, da) { | |
var ea = da.getStartKey(), | |
fa = da.getStartOffset(), | |
ga = ca.getBlockForKey(ea); | |
if (fa > 0) return ga.getInlineStyleAt(fa - 1); | |
if (ga.getLength()) return ga.getInlineStyleAt(0); | |
return ba(ca, ea); | |
} | |
function aa(ca, da) { | |
var ea = da.getStartKey(), | |
fa = da.getStartOffset(), | |
ga = ca.getBlockForKey(ea); | |
if (fa < ga.getLength()) return ga.getInlineStyleAt(fa); | |
if (fa > 0) return ga.getInlineStyleAt(fa - 1); | |
return ba(ca, ea); | |
} | |
function ba(ca, da) { | |
var ea = ca.getBlockBefore(da), | |
fa; | |
while (ea) { | |
fa = ea.getLength(); | |
if (fa) return ea.getInlineStyleAt(fa - 1); | |
ea = ca.getBlockBefore(ea.getKey()); | |
} | |
return h.NONE; | |
} | |
e.exports = t; | |
}, null); | |
__d("AbstractTextEditorPlaceholder.react", ["EditorState", "React", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = h, | |
k = j.PropTypes, | |
l = h.createClass({ | |
displayName: "AbstractTextEditorPlaceholder", | |
propTypes: { | |
editorState: k.instanceOf(g).isRequired, | |
text: k.string.isRequired | |
}, | |
shouldComponentUpdate: function(m, n) { | |
if (this.props.text !== m.text) return true; | |
var o = this.props.editorState, | |
p = m.editorState, | |
q = o.getSelection(), | |
r = p.getSelection(); | |
return (q.getHasFocus() !== r.getHasFocus()); | |
}, | |
render: function() { | |
var m = this.props.editorState.getSelection().getHasFocus(), | |
n = (("_5ywb") + (m ? ' ' + "_5ywc" : '')); | |
return (h.createElement("div", { | |
className: n | |
}, h.createElement("div", { | |
className: "_3br6" | |
}, this.props.text))); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("DocumentCommands", ["keyMirror"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g({ | |
UNDO: true, | |
REDO: true, | |
DELETE: true, | |
DELETE_WORD: true, | |
BACKSPACE: true, | |
BACKSPACE_WORD: true, | |
BACKSPACE_TO_END_OF_BLOCK: true, | |
BOLD: true, | |
ITALIC: true, | |
UNDERLINE: true, | |
CODE: true, | |
INSERT_BLOCK_DELIMITER: true, | |
TRANSPOSE_CHARACTERS: true, | |
MOVE_SELECTION_TO_START_OF_BLOCK: true, | |
MOVE_SELECTION_TO_END_OF_BLOCK: true, | |
SECONDARY_CUT: true, | |
SECONDARY_PASTE: true | |
}); | |
e.exports = h; | |
}, null); | |
__d("KeyBindingUtil", ["UserAgent"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g.isPlatform('Mac OS X'), | |
i = { | |
isCtrlKeyCommand: function(j) { | |
return !!j.ctrlKey && !j.altKey; | |
}, | |
hasCommandModifier: function(j) { | |
return h ? (!!j.metaKey && !j.altKey) : i.isCtrlKeyCommand(j); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("getDefaultKeyBinding", ["DocumentCommands", "KeyBindingUtil", "Keys", "UserAgent"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = j.isPlatform('Mac OS X'), | |
l = j.isPlatform('Windows'), | |
m = j.isBrowser('Firefox'), | |
n = k && m && m < 29, | |
o = h, | |
p = o.hasCommandModifier, | |
q = o.isCtrlKeyCommand; | |
function r(w) { | |
return (k && !!w.altKey) || q(w); | |
} | |
function s(w) { | |
if (p(w)) return w.shiftKey ? g.REDO : g.UNDO; | |
} | |
function t(w) { | |
if (l && w.shiftKey) return null; | |
return r(w) ? g.DELETE_WORD : g.DELETE; | |
} | |
function u(w) { | |
if (p(w) && k) return g.BACKSPACE_TO_END_OF_BLOCK; | |
return r(w) ? g.BACKSPACE_WORD : g.BACKSPACE; | |
} | |
function v(w) { | |
switch (w.keyCode) { | |
case 66: | |
return p(w) ? g.BOLD : null; | |
case 68: | |
return q(w) ? g.DELETE : null; | |
case 72: | |
return q(w) ? g.BACKSPACE : null; | |
case 73: | |
return p(w) ? g.ITALIC : null; | |
case 74: | |
return p(w) ? g.CODE : null; | |
case 75: | |
if (!l && q(w)) return g.SECONDARY_CUT; | |
return null; | |
case 79: | |
return q(w) ? g.INSERT_BLOCK_DELIMITER : null; | |
case 84: | |
return k && q(w) ? g.TRANSPOSE_CHARACTERS : null; | |
case 85: | |
if (k && q(w)) return g.BACKSPACE_TO_END_OF_BLOCK; | |
return p(w) ? g.UNDERLINE : null; | |
case 87: | |
return k && q(w) ? g.BACKSPACE_WORD : null; | |
case 89: | |
if (q(w)) return l ? g.REDO : g.SECONDARY_PASTE; | |
return null; | |
case 90: | |
return s(w) || null; | |
case i.DELETE: | |
return t(w); | |
case i.BACKSPACE: | |
return u(w); | |
case i.LEFT: | |
return (n && p(w) ? g.MOVE_SELECTION_TO_START_OF_BLOCK : null); | |
case i.RIGHT: | |
return (n && p(w) ? g.MOVE_SELECTION_TO_END_OF_BLOCK : null); | |
default: | |
return null; | |
} | |
} | |
e.exports = v; | |
}, null); | |
__d("AbstractTextEditorProps", ["EditorState", "React", "emptyFunction", "getDefaultKeyBinding"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = h, | |
l = k.PropTypes, | |
m = i.thatReturns(''), | |
n = i.thatReturns(null), | |
o = { | |
propTypes: { | |
editorState: l.instanceOf(g).isRequired, | |
placeholder: l.string, | |
textAlignment: l.oneOf(['left', 'center', 'right']), | |
blockRendererFn: l.func, | |
blockStyleFn: l.func, | |
inlineStyleFn: l.func, | |
keyBindingFn: l.func, | |
readOnly: l.bool, | |
spellCheck: l.bool, | |
stripPastedStyles: l.bool, | |
handleReturn: l.func, | |
handleKeyCommand: l.func, | |
handleBeforeInput: l.func, | |
handlePastedFiles: l.func, | |
onEscape: l.func, | |
onTab: l.func, | |
onUpArrow: l.func, | |
onDownArrow: l.func, | |
onPasteRawText: l.func, | |
onBlur: l.func, | |
onFocus: l.func | |
}, | |
getDefaultProps: function() { | |
return { | |
blockRendererFn: n, | |
blockStyleFn: m, | |
inlineStyleFn: m, | |
keyBindingFn: j, | |
readOnly: false, | |
spellCheck: false, | |
stripPastedStyles: false | |
}; | |
} | |
}; | |
e.exports = o; | |
}, null); | |
__d("CharacterMetadata", ["ComposedInlineStyle", "immutable"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = g, | |
j = i.NONE, | |
k = h, | |
l = k.Record, | |
m = k.is, | |
n = { | |
style: j, | |
entity: null | |
}, | |
o = l(n); | |
for (var p in o) | |
if (o.hasOwnProperty(p)) r[p] = o[p]; | |
var q = o === null ? null : o.prototype; | |
r.prototype = Object.create(q); | |
r.prototype.constructor = r; | |
r.__superConstructor__ = o; | |
function r() { | |
if (o !== null) o.apply(this, arguments); | |
} | |
r.prototype.getStyle = function() { | |
return this.get('style'); | |
}; | |
r.prototype.getEntity = function() { | |
return this.get('entity'); | |
}; | |
r.prototype.hasStyle = function(t) { | |
return !!(this.getStyle() & t); | |
}; | |
r.applyStyle = function(t, u) { | |
return t.set('style', t.getStyle() | u); | |
}; | |
r.removeStyle = function(t, u) { | |
var v = t.set('style', t.getStyle() & (~u)); | |
return m(v, s) ? s : v; | |
}; | |
r.applyEntity = function(t, u) { | |
var v = t.getEntity() === u ? t : t.set('entity', u); | |
return m(v, s) ? s : v; | |
}; | |
var s = new r(); | |
r.EMPTY = s; | |
e.exports = r; | |
}, null); | |
__d("ContentStateInlineStyle", ["CharacterMetadata", "immutable"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = { | |
add: function(k, l, m) { | |
return j(k, l, m, true); | |
}, | |
remove: function(k, l, m) { | |
return j(k, l, m, false); | |
} | |
}; | |
function j(k, l, m, n) { | |
var o = k.getBlockMap(), | |
p = l.getStartKey(), | |
q = l.getStartOffset(), | |
r = l.getEndKey(), | |
s = l.getEndOffset(), | |
t = o.skipUntil(function(u, v) { | |
return v === p; | |
}).takeUntil(function(u, v) { | |
return v === r; | |
}).concat(h.Map([ | |
[r, o.get(r)] | |
])).map(function(u, v) { | |
var w, x; | |
if (p === r) { | |
w = q; | |
x = s; | |
} else { | |
w = v === p ? q : 0; | |
x = v === r ? s : u.getLength(); | |
} | |
var y = u.getCharacterList(), | |
z; | |
while (w < x) { | |
z = y.get(w); | |
y = y.set(w, n ? g.applyStyle(z, m) : g.removeStyle(z, m)); | |
w++; | |
} | |
return u.set('characterList', y); | |
}); | |
return k.merge({ | |
blockMap: o.merge(t), | |
selectionBefore: l, | |
selectionAfter: l | |
}); | |
} | |
e.exports = i; | |
}, null); | |
__d("DocumentRemovalDirection", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
BACKWARD: 0, | |
FORWARD: 1 | |
}; | |
e.exports = g; | |
}, null); | |
__d("applyEntityToContentBlock", ["CharacterMetadata"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i, j, k, l) { | |
var m = i.getCharacterList(); | |
while (j < k) { | |
m = m.set(j, g.applyEntity(m.get(j), l)); | |
j++; | |
} | |
return i.set('characterList', m); | |
} | |
e.exports = h; | |
}, null); | |
__d("applyEntityToContentState", ["immutable", "applyEntityToContentBlock"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function i(j, k, l) { | |
var m = j.getBlockMap(), | |
n = k.getStartKey(), | |
o = k.getStartOffset(), | |
p = k.getEndKey(), | |
q = k.getEndOffset(), | |
r = m.skipUntil(function(s, t) { | |
return t === n; | |
}).takeUntil(function(s, t) { | |
return t === p; | |
}).merge(g.OrderedMap([ | |
[p, m.get(p)] | |
])).map(function(s, t) { | |
var u, v; | |
if (n === p) { | |
u = o; | |
v = q; | |
} else { | |
u = t === n ? o : 0; | |
v = t === p ? 0 : s.getLength(); | |
} | |
return h(s, u, v, l); | |
}); | |
return j.merge({ | |
blockMap: m.merge(r), | |
selectionBefore: k, | |
selectionAfter: k | |
}); | |
} | |
e.exports = i; | |
}, null); | |
__d("DocumentEntitySegments", ["DocumentRemovalDirection"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g, | |
i = h.FORWARD, | |
j = { | |
getRemovalRange: function(k, l, m, n, o) { | |
var p = m.split(' '); | |
p = p.map(function(z, aa) { | |
if (o === i) { | |
if (aa > 0) return ' ' + z; | |
} else if (aa < p.length - 1) return z + ' '; | |
return z; | |
}); | |
var q = n, | |
r, s, t = null, | |
u = null; | |
for (var v = 0; v < p.length; v++) { | |
s = p[v]; | |
r = q + s.length; | |
if (k < r && q < l) { | |
if (t !== null) { | |
u = r; | |
} else { | |
t = q; | |
u = r; | |
} | |
} else if (t !== null) break; | |
q = r; | |
} | |
var w = n + m.length, | |
x = t === n, | |
y = u === w; | |
if ((!x && y) || (x && !y)) | |
if (o === i) { | |
if (u !== w) u++; | |
} else if (t !== n) t--; | |
return { | |
start: t, | |
end: u | |
}; | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("checkRangeOverlap", ["invariant"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i, j, k, l) { | |
g(i <= j && k <= l); | |
return (i < l && j > k); | |
} | |
e.exports = h; | |
}, null); | |
__d("getRangesForDocumentEntity", ["invariant"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i, j) { | |
var k = []; | |
i.findEntityRanges(function(l) { | |
return l.getEntity() === j; | |
}, function(l, m) { | |
k.push({ | |
start: l, | |
end: m | |
}); | |
}); | |
g(!!k.length); | |
return k; | |
} | |
e.exports = h; | |
}, null); | |
__d("getCharacterRemovalRange", ["ComposedEntityMutability", "DocumentEntity", "DocumentEntitySegments", "checkRangeOverlap", "getRangesForDocumentEntity", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = g, | |
n = m.MUTABLE, | |
o = m.IMMUTABLE; | |
function p(q, r, s) { | |
var t = r.getStartOffset(), | |
u = r.getEndOffset(), | |
v = q.getEntityAt(t); | |
if (!v) return r; | |
var w = h.get(v), | |
x = w.getMutability(); | |
if (x === n) return r; | |
var y = k(q, v).filter(function(ba) { | |
return j(t, u, ba.start, ba.end); | |
}); | |
l(y.length == 1); | |
var z = y[0]; | |
if (x === o) return r.merge({ | |
anchorOffset: z.start, | |
focusOffset: z.end, | |
isBackward: false | |
}); | |
var aa = i.getRemovalRange(t, u, q.getText().slice(z.start, z.end), z.start, s); | |
return r.merge({ | |
anchorOffset: aa.start, | |
focusOffset: aa.end, | |
isBackward: false | |
}); | |
} | |
e.exports = p; | |
}, null); | |
__d("generateBlockKey", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = {}, | |
h = Math.pow(2, 24); | |
function i() { | |
var j; | |
while (j === (void 0) || g.hasOwnProperty(j) || !isNaN(+j)) j = Math.floor(Math.random() * h).toString(32); | |
g[j] = true; | |
return j; | |
} | |
e.exports = i; | |
}, null); | |
__d("removeEntitiesAtEdges", ["CharacterMetadata", "ComposedEntityMutability", "DocumentEntity", "immutable", "findRangesImmutable", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var m = j, | |
n = m.List, | |
o = h, | |
p = o.MUTABLE; | |
n; | |
function q(t, u) { | |
var v = t.getBlockMap(), | |
w = {}, | |
x = u.getStartKey(), | |
y = u.getStartOffset(), | |
z = v.get(x), | |
aa = s(z, y); | |
if (aa !== z) w[x] = aa; | |
var ba = u.getEndKey(), | |
ca = u.getEndOffset(), | |
da = v.get(ba); | |
if (x === ba) da = aa; | |
var ea = s(da, ca); | |
if (ea !== da) w[ba] = ea; | |
if (!Object.keys(w).length) return t.set('selectionAfter', u); | |
return t.merge({ | |
blockMap: v.merge(w), | |
selectionAfter: u | |
}); | |
} | |
function r(t, u, v) { | |
var w; | |
k(t, function(x, y) { | |
return x.getEntity() === y.getEntity(); | |
}, function(x) { | |
return x.getEntity() === u; | |
}, function(x, y) { | |
if (x <= v && y >= v) w = { | |
start: x, | |
end: y | |
}; | |
}); | |
l(typeof w === 'object'); | |
return w; | |
} | |
function s(t, u) { | |
var v = t.getCharacterList(), | |
w = u > 0 ? v.get(u - 1) : undefined, | |
x = u < v.count() ? v.get(u) : undefined, | |
y = w ? w.getEntity() : undefined, | |
z = x ? x.getEntity() : undefined; | |
if (z && z === y) { | |
var aa = i.get(z); | |
if (aa.getMutability() !== p) { | |
var ba = r(v, z, u), | |
ca = ba.start, | |
da = ba.end, | |
ea; | |
while (ca < da) { | |
ea = v.get(ca); | |
v = v.set(ca, g.applyEntity(ea, null)); | |
ca++; | |
} | |
return t.set('characterList', v); | |
} | |
} | |
return t; | |
} | |
e.exports = q; | |
}, null); | |
__d("getContentStateFragment", ["immutable", "generateBlockKey", "removeEntitiesAtEdges"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.OrderedMap; | |
k; | |
function l(m, n) { | |
var o = n.getStartKey(), | |
p = n.getStartOffset(), | |
q = n.getEndKey(), | |
r = n.getEndOffset(), | |
s = i(m, n), | |
t = s.getBlockMap(), | |
u = t.keySeq(), | |
v = u.indexOf(o), | |
w = u.indexOf(q) + 1; | |
return t.slice(v, w).map(function(x, y) { | |
var z = h(), | |
aa = x.getText(), | |
ba = x.getCharacterList(); | |
if (o === q) return x.merge({ | |
key: z, | |
text: aa.slice(p, r), | |
characterList: ba.slice(p, r) | |
}); | |
if (y === o) return x.merge({ | |
key: z, | |
text: aa.slice(p), | |
characterList: ba.slice(p) | |
}); | |
if (y === q) return x.merge({ | |
key: z, | |
text: aa.slice(0, r), | |
characterList: ba.slice(0, r) | |
}); | |
return x.set('key', z); | |
}); | |
} | |
e.exports = l; | |
}, null); | |
__d("createOrderedMapFromBlockArray", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g, | |
i = h.OrderedMap; | |
function j(k) { | |
return i(k.map(function(l) { | |
return [l.getKey(), l]; | |
})); | |
} | |
e.exports = j; | |
}, null); | |
__d("insertIntoList", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g, | |
i = h.List; | |
i; | |
function j(k, l, m) { | |
if (m === k.count()) { | |
l.forEach(function(n) { | |
k = k.push(n); | |
}); | |
} else if (m === 0) { | |
l.reverse().forEach(function(n) { | |
k = k.unshift(n); | |
}); | |
} else k = k.slice(0, m).concat(l, k.slice(m)); | |
return k; | |
} | |
e.exports = j; | |
}, null); | |
__d("insertFragmentIntoContentState", ["immutable", "createOrderedMapFromBlockArray", "generateBlockKey", "insertIntoList", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = g, | |
m = l.OrderedMap; | |
m; | |
function n(o, p, q) { | |
k(p.isCollapsed()); | |
var r = p.getStartKey(), | |
s = p.getStartOffset(), | |
t = o.getBlockMap(), | |
u = q.size, | |
v, w; | |
if (u === 1) { | |
var x = t.get(r), | |
y = q.first(), | |
z = x.getText(), | |
aa = x.getCharacterList(), | |
ba = x.merge({ | |
text: (z.slice(0, s) + y.getText() + z.slice(s)), | |
characterList: j(aa, y.getCharacterList(), s) | |
}); | |
t = t.set(r, ba); | |
v = r; | |
w = s + y.getText().length; | |
return o.merge({ | |
blockMap: t.set(r, ba), | |
selectionBefore: p, | |
selectionAfter: p.merge({ | |
anchorKey: v, | |
anchorOffset: w, | |
focusKey: v, | |
focusOffset: w, | |
isBackward: false | |
}) | |
}); | |
} | |
var ca = []; | |
o.getBlockMap().forEach(function(da, ea) { | |
if (ea !== r) { | |
ca.push(da); | |
return; | |
} | |
var fa = da.getText(), | |
ga = da.getCharacterList(), | |
ha = fa.length, | |
ia = fa.slice(0, s), | |
ja = ga.slice(0, s), | |
ka = q.first(), | |
la = da.merge({ | |
text: ia + ka.getText(), | |
characterList: ja.concat(ka.getCharacterList()) | |
}); | |
ca.push(la); | |
q.slice(1, u - 1).forEach(function(qa) { | |
ca.push(qa.set('key', i())); | |
}); | |
var ma = fa.slice(s, ha), | |
na = ga.slice(s, ha), | |
oa = q.last(); | |
v = i(); | |
var pa = oa.merge({ | |
key: v, | |
text: oa.getText() + ma, | |
characterList: oa.getCharacterList().concat(na) | |
}); | |
ca.push(pa); | |
}); | |
w = q.last().getLength(); | |
return o.merge({ | |
blockMap: h(ca), | |
selectionBefore: p, | |
selectionAfter: p.merge({ | |
anchorKey: v, | |
anchorOffset: w, | |
focusKey: v, | |
focusOffset: w, | |
isBackward: false | |
}) | |
}); | |
} | |
e.exports = n; | |
}, null); | |
__d("insertTextIntoContentState", ["immutable", "insertIntoList", "invariant"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = g, | |
k = j.Repeat; | |
function l(m, n, o, p) { | |
i(n.isCollapsed()); | |
var q = o.length; | |
if (!q) return m; | |
var r = m.getBlockMap(), | |
s = n.getStartKey(), | |
t = n.getStartOffset(), | |
u = r.get(s), | |
v = u.getText(), | |
w = u.merge({ | |
text: (v.slice(0, t) + o + v.slice(t, u.getLength())), | |
characterList: h(u.getCharacterList(), k(p, q), t) | |
}), | |
x = t + q; | |
return m.merge({ | |
blockMap: r.set(s, w), | |
selectionAfter: n.merge({ | |
anchorOffset: x, | |
focusOffset: x | |
}) | |
}); | |
} | |
e.exports = l; | |
}, null); | |
__d("removeRangeFromContentState", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g, | |
i = h.List; | |
i; | |
function j(l, m) { | |
if (m.isCollapsed()) return l; | |
var n = l.getBlockMap(), | |
o = m.getStartKey(), | |
p = m.getStartOffset(), | |
q = m.getEndKey(), | |
r = m.getEndOffset(), | |
s = n.get(o), | |
t = n.get(q), | |
u; | |
if (s === t) { | |
u = k(s.getCharacterList(), p, r); | |
} else u = s.getCharacterList().slice(0, p).concat(t.getCharacterList().slice(r)); | |
var v = s.merge({ | |
text: (s.getText().slice(0, p) + t.getText().slice(r)), | |
characterList: u | |
}), | |
w = n.toSeq().skipUntil(function(x, y) { | |
return y === o; | |
}).takeUntil(function(x, y) { | |
return y === q; | |
}).concat(g.Map([ | |
[q, null] | |
])).map(function(x, y) { | |
return y === o ? v : null; | |
}); | |
n = n.merge(w).filter(function(x) { | |
return !!x; | |
}); | |
return l.merge({ | |
blockMap: n, | |
selectionBefore: m, | |
selectionAfter: m.merge({ | |
anchorKey: o, | |
anchorOffset: p, | |
focusKey: o, | |
focusOffset: p, | |
isBackward: false | |
}) | |
}); | |
} | |
function k(l, m, n) { | |
if (m === 0) { | |
while (m < n) { | |
l = l.shift(); | |
m++; | |
} | |
} else if (n === l.count()) { | |
while (n > m) { | |
l = l.pop(); | |
n--; | |
} | |
} else l = l.slice(0, m).concat(l.slice(n)); | |
return l; | |
} | |
e.exports = j; | |
}, null); | |
__d("setBlockTypeForContentState", ["immutable"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i, j, k) { | |
var l = j.getStartKey(), | |
m = j.getEndKey(), | |
n = i.getBlockMap(), | |
o = n.toSeq().skipUntil(function(p, q) { | |
return q === l; | |
}).takeUntil(function(p, q) { | |
return q === m; | |
}).concat(g.Map([ | |
[m, n.get(m)] | |
])).map(function(p) { | |
return p.merge({ | |
type: k, | |
depth: 0 | |
}); | |
}); | |
return i.merge({ | |
blockMap: n.merge(o), | |
selectionBefore: j, | |
selectionAfter: j | |
}); | |
} | |
e.exports = h; | |
}, null); | |
__d("splitBlockInContentState", ["generateBlockKey", "invariant"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function i(j, k) { | |
h(k.isCollapsed()); | |
var l = k.getAnchorKey(), | |
m = k.getAnchorOffset(), | |
n = j.getBlockMap(), | |
o = n.get(l), | |
p = o.getText(), | |
q = o.getCharacterList(), | |
r = o.merge({ | |
text: p.slice(0, m), | |
characterList: q.slice(0, m) | |
}), | |
s = g(), | |
t = r.merge({ | |
key: s, | |
text: p.slice(m), | |
characterList: q.slice(m) | |
}), | |
u = n.toSeq().takeUntil(function(x) { | |
return x === o; | |
}), | |
v = n.toSeq().skipUntil(function(x) { | |
return x === o; | |
}).rest(), | |
w = u.concat([ | |
[r.getKey(), r], | |
[t.getKey(), t] | |
], v).toOrderedMap(); | |
return j.merge({ | |
blockMap: w, | |
selectionBefore: k, | |
selectionAfter: k.merge({ | |
anchorKey: s, | |
anchorOffset: 0, | |
focusKey: s, | |
focusOffset: 0, | |
isBackward: false | |
}) | |
}); | |
} | |
e.exports = i; | |
}, null); | |
__d("DocumentModifier", ["CharacterMetadata", "ComposedInlineStyle", "ContentStateInlineStyle", "DocumentRemovalDirection", "immutable", "applyEntityToContentState", "getCharacterRemovalRange", "getContentStateFragment", "insertFragmentIntoContentState", "insertTextIntoContentState", "invariant", "removeEntitiesAtEdges", "removeRangeFromContentState", "setBlockTypeForContentState", "splitBlockInContentState"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var v = k, | |
w = v.OrderedMap, | |
x = h, | |
y = x.NONE; | |
w; | |
var z = { | |
replaceText: function(aa, ba, ca, da, ea) { | |
if (da === undefined) da = y; | |
if (ea === undefined) ea = null; | |
var fa = r(aa, ba), | |
ga = s(fa, ba), | |
ha; | |
if (da === y && ea === null) { | |
ha = g.EMPTY; | |
} else ha = new g({ | |
style: da, | |
entity: ea | |
}); | |
return p(ga, ga.getSelectionAfter(), ca, ha); | |
}, | |
insertText: function(aa, ba, ca, da, ea) { | |
q(ba.isCollapsed()); | |
if (da === undefined) da = y; | |
if (ea === undefined) ea = null; | |
var fa; | |
if (da === y && ea === null) { | |
fa = g.EMPTY; | |
} else fa = new g({ | |
style: da, | |
entity: ea | |
}); | |
var ga = r(aa, ba); | |
return p(ga, ga.getSelectionAfter(), ca, fa); | |
}, | |
moveText: function(aa, ba, ca) { | |
var da = n(aa, ba), | |
ea = z.removeRange(aa, ba, j.BACKWARD); | |
return z.replaceWithFragment(ea, ca, da); | |
}, | |
replaceWithFragment: function(aa, ba, ca) { | |
var da = r(aa, ba), | |
ea = s(da, ba); | |
return o(ea, ea.getSelectionAfter(), ca); | |
}, | |
removeRange: function(aa, ba, ca) { | |
if (ba.getAnchorKey() === ba.getFocusKey()) { | |
var da = ba.getAnchorKey(), | |
ea = ba.getStartOffset(), | |
fa = ba.getEndOffset(), | |
ga = aa.getBlockForKey(da), | |
ha = ga.getEntityAt(ea), | |
ia = ga.getEntityAt(fa - 1); | |
if (ha && ha === ia) { | |
var ja = m(ga, ba, ca); | |
return s(aa, ja); | |
} | |
} | |
var ka = r(aa, ba); | |
return s(ka, ba); | |
}, | |
splitBlock: function(aa, ba) { | |
var ca = r(aa, ba), | |
da = s(ca, ba); | |
return u(da, da.getSelectionAfter()); | |
}, | |
applyInlineStyle: function(aa, ba, ca) { | |
return i.add(aa, ba, ca); | |
}, | |
removeInlineStyle: function(aa, ba, ca) { | |
return i.remove(aa, ba, ca); | |
}, | |
setBlockType: function(aa, ba, ca) { | |
return t(aa, ba, ca); | |
}, | |
applyEntity: function(aa, ba, ca) { | |
var da = r(aa, ba); | |
return l(da, ba, ca); | |
} | |
}; | |
e.exports = z; | |
}, null); | |
__d("isSelectionAtLeafStart", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function g(h) { | |
var i = h.getSelection(), | |
j = i.getAnchorKey(), | |
k = h.getBlockTree(j), | |
l = i.getStartOffset(), | |
m = false; | |
k.some(function(n) { | |
if (l === n.get('start')) { | |
m = true; | |
return true; | |
} | |
if (l < n.get('end')) return n.get('leaves').some(function(o) { | |
var p = o.get('start'); | |
if (l === p) { | |
m = true; | |
return true; | |
} | |
if (l < p) return false; | |
}); | |
}); | |
return m; | |
} | |
e.exports = g; | |
}, null); | |
__d("TextEditorCompositionHandler", ["ComposedInlineStyle", "DocumentModifier", "EditorChangeType", "EditorState", "Keys", "isSelectionAtLeafStart"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = g.NONE, | |
n = 20, | |
o = { | |
onBeforeInput: function(p) { | |
this._textInputData = (this._textInputData || '') + p.data; | |
}, | |
onCompositionStart: function() { | |
this._stillComposing = true; | |
}, | |
onCompositionEnd: function(p) { | |
this._resolved = false; | |
this._stillComposing = false; | |
setTimeout(function() { | |
if (!this._resolved) o.resolveComposition.call(this); | |
}.bind(this), n); | |
}, | |
onKeyDown: function(p) { | |
if (p.which === k.RIGHT || p.which === k.LEFT) p.preventDefault(); | |
}, | |
onKeyPress: function(p) { | |
if (p.which === k.RETURN) p.preventDefault(); | |
}, | |
resolveComposition: function() { | |
if (this._stillComposing) return; | |
this._resolved = true; | |
var p = this._textInputData; | |
this._textInputData = ''; | |
var q = j.set(this.props.editorState, { | |
inCompositionMode: false | |
}), | |
r = !p || l(q); | |
if (r) this.restoreEditorDOM(); | |
this.exitCurrentMode(); | |
this.removeRenderGuard(); | |
if (p) { | |
var s = h.replaceText(q.getCurrentContent(), q.getSelection(), p, m, null); | |
this.update(j.push(q, s, i.INSERT_CHARACTERS)); | |
return; | |
} | |
if (r) this.update(j.set(q, { | |
nativelyRenderedContent: null, | |
forceSelection: true | |
})); | |
} | |
}; | |
e.exports = o; | |
}, null); | |
__d("DocumentOffsetKey", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = '-', | |
h = { | |
encode: function(i, j, k) { | |
return i + g + j + g + k; | |
}, | |
decode: function(i) { | |
var j = i.split(g), | |
k = j[0], | |
l = j[1], | |
m = j[2]; | |
return { | |
blockKey: k, | |
decoratorKey: parseInt(l, 10), | |
leafKey: parseInt(m, 10) | |
}; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("ElementForBlockType", ["ComposedBlockType"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
getElement: function(i) { | |
switch (i) { | |
case g.HEADER_ONE: | |
return 'h2'; | |
case g.HEADER_TWO: | |
return 'h3'; | |
case g.UNORDERED_LIST_ITEM: | |
case g.ORDERED_LIST_ITEM: | |
return 'li'; | |
case g.BLOCKQUOTE: | |
return 'blockquote'; | |
case g.MEDIA: | |
return 'figure'; | |
default: | |
return 'div'; | |
} | |
}, | |
getWrapperElement: function(i) { | |
switch (i) { | |
case g.UNORDERED_LIST_ITEM: | |
case g.ORDERED_LIST_ITEM: | |
return 'ul'; | |
case g.CODE: | |
return 'pre'; | |
default: | |
return null; | |
} | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("ContentBlock", ["ComposedBlockType", "ComposedInlineStyle", "immutable", "findRangesImmutable"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = g, | |
l = k.UNSTYLED, | |
m = h, | |
n = m.NONE, | |
o = i, | |
p = o.List, | |
q = o.Record, | |
r = { | |
key: '', | |
type: l, | |
text: '', | |
characterList: p(), | |
depth: 0 | |
}, | |
s = q(r); | |
for (var t in s) | |
if (s.hasOwnProperty(t)) v[t] = s[t]; | |
var u = s === null ? null : s.prototype; | |
v.prototype = Object.create(u); | |
v.prototype.constructor = v; | |
v.__superConstructor__ = s; | |
function v() { | |
if (s !== null) s.apply(this, arguments); | |
} | |
v.prototype.getKey = function() { | |
return this.get('key'); | |
}; | |
v.prototype.getType = function() { | |
return this.get('type'); | |
}; | |
v.prototype.getText = function() { | |
return this.get('text'); | |
}; | |
v.prototype.getCharacterList = function() { | |
return this.get('characterList'); | |
}; | |
v.prototype.getLength = function() { | |
return this.getText().length; | |
}; | |
v.prototype.getDepth = function() { | |
return this.get('depth'); | |
}; | |
v.prototype.getInlineStyleAt = function(y) { | |
var z = this.getCharacterList().get(y); | |
return z ? z.getStyle() : n; | |
}; | |
v.prototype.getEntityAt = function(y) { | |
var z = this.getCharacterList().get(y); | |
return z ? z.getEntity() : null; | |
}; | |
v.prototype.findStyleRanges = function(y, z) { | |
j(this.getCharacterList(), w, y, z); | |
}; | |
v.prototype.findEntityRanges = function(y, z) { | |
j(this.getCharacterList(), x, y, z); | |
}; | |
function w(y, z) { | |
return y.getStyle() === z.getStyle(); | |
} | |
function x(y, z) { | |
return y.getEntity() === z.getEntity(); | |
} | |
e.exports = v; | |
}, null); | |
__d("DocumentCharacters", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
BLOCK_DELIMITER: '\u000D', | |
SOFT_NEWLINE: '\u000A', | |
PHOTO: '\ud83d\udcf7', | |
VIDEO: '\ud83d\udcf9' | |
}; | |
e.exports = g; | |
}, null); | |
__d("TextEditorTextNode.react", ["React", "UserAgent", "getTextContentAccessor"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = h.isBrowser('IE <= 11'), | |
k = i(); | |
function l(p) { | |
return j ? p[k] === '\n' : p.tagName === 'BR'; | |
} | |
var m = j ? g.createElement("span", { | |
key: "A" | |
}, '\n') : g.createElement("br", { | |
key: "A" | |
}), | |
n = j ? g.createElement("span", { | |
key: "B" | |
}, '\n') : g.createElement("br", { | |
key: "B" | |
}), | |
o = g.createClass({ | |
displayName: "TextEditorTextNode", | |
shouldComponentUpdate: function(p) { | |
var q = g.findDOMNode(this), | |
r = p.children === ''; | |
if (r) return !l(q); | |
return q[k] !== p.children; | |
}, | |
componentWillUpdate: function() { | |
this.forceFlag = !this.forceFlag; | |
}, | |
render: function() { | |
if (this.props.children === '') return this.forceFlag ? m : n; | |
return g.createElement("span", { | |
key: this.forceFlag ? 'A' : 'B' | |
}, this.props.children); | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("DocumentStringKey", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var g = { | |
stringify: function(h) { | |
return '_' + String(h); | |
}, | |
unstringify: function(h) { | |
return h.slice(1); | |
} | |
}; | |
e.exports = g; | |
}, null); | |
__d("encodeEntityRanges", ["DocumentStringKey", "UnicodeUtils"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = h, | |
j = i.strlen; | |
function k(l, m) { | |
var n = []; | |
l.findEntityRanges(function(o) { | |
return !!o.getEntity(); | |
}, function(o, p) { | |
var q = l.getText(), | |
r = l.getEntityAt(o); | |
n.push({ | |
offset: j(q.slice(0, o)), | |
length: j(q.slice(o, p)), | |
key: Number(m[g.stringify(r)]) | |
}); | |
}); | |
return n; | |
} | |
e.exports = k; | |
}, null); | |
__d("encodeInlineStyleRanges", ["ComposedInlineStyle", "immutable", "UnicodeUtils", "findRangesImmutable", "getObjectValues"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = h, | |
m = l.List, | |
n = function(s, t) { | |
return s === t; | |
}, | |
o = function(s) { | |
return !!s; | |
}, | |
p = []; | |
m; | |
function q(s, t, u) { | |
var v = [], | |
w = t.map(function(x) { | |
return x & u; | |
}); | |
j(w, n, o, function(x, y) { | |
var z = s.getText(); | |
v.push({ | |
offset: i.strlen(z.slice(0, x)), | |
length: i.strlen(z.slice(x, y)), | |
style: u | |
}); | |
}); | |
return v; | |
} | |
function r(s) { | |
var t = s.getCharacterList().map(function(v) { | |
return v.getStyle(); | |
}), | |
u = k(g).filter(function(v) { | |
return !!v; | |
}); | |
return Array.prototype.concat.apply(p, u.map(function(v) { | |
return q(s, t, v); | |
})); | |
} | |
e.exports = r; | |
}, null); | |
__d("encodeBlocks", ["ComposedBlockType", "DocumentEntity", "DocumentStringKey", "encodeEntityRanges", "encodeInlineStyleRanges", "mapObject"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var m = g, | |
n = m.ORDERED_LIST_ITEM, | |
o = m.UNORDERED_LIST_ITEM; | |
function p(r) { | |
var s = r.getBlockMap(), | |
t = 0, | |
u = {}, | |
v = []; | |
s.forEach(function(y, z) { | |
y.findEntityRanges(function(aa) { | |
return aa.getEntity() !== null; | |
}, function(aa, ba) { | |
var ca = i.stringify(y.getEntityAt(aa)); | |
if (!u.hasOwnProperty(ca)) u[ca] = '' + (t++); | |
}); | |
v.push({ | |
key: z, | |
text: y.getText(), | |
type: y.getType(), | |
depth: q(y) ? y.getDepth() : 0, | |
inlineStyleRanges: k(y), | |
entityRanges: j(y, u) | |
}); | |
}); | |
var w = Object.keys(u), | |
x = {}; | |
w.forEach(function(y, z) { | |
var aa = h.get(i.unstringify(y)), | |
ba = null, | |
ca = null, | |
da = aa.getData(); | |
if (da) { | |
ba = da.id || null; | |
ca = l(da, function(ea) { | |
return '' + ea; | |
}); | |
delete ca.id; | |
} | |
x[z] = { | |
id: ba, | |
type: aa.getType(), | |
data: ca && Object.keys(ca).length ? ca : undefined | |
}; | |
}); | |
return { | |
entityMap: x, | |
blocks: v | |
}; | |
} | |
function q(r) { | |
var s = r.getType(); | |
return s === n || s === o; | |
} | |
e.exports = p; | |
}, null); | |
__d("TextEditorBanzai", ["BanzaiScuba", "ReactMount", "containsNode", "encodeBlocks", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = 3, | |
m = { | |
logSetSelectionError: function(s, t) { | |
var u = p(); | |
u.addNormal('error_type', 'setSelection'); | |
var v = t, | |
w = v[0], | |
x = v[1], | |
y = v[2], | |
z = v[3], | |
aa = v[4]; | |
u.addNormal('selection_state', w.serialize()); | |
var ba = n(x); | |
u.addNormal('node_html', ba); | |
u.addNormal('selection_params', 'Key: ' + y + ', Start: ' + z + ', End: ' + aa); | |
u.addNormal('error_text', s.message); | |
u.post(); | |
}, | |
logGetSelectionError: function(s, t) { | |
var u = p(); | |
u.addNormal('error_type', 'getSelection'); | |
var v = t, | |
w = v[0], | |
x = v[1], | |
y = w.getCurrentContent(), | |
z = j(y), | |
aa = z.blocks; | |
aa = aa.map(function(ea) { | |
var fa = ea, | |
ga = fa.text, | |
ha = (function(ia, ja) { | |
var ka = {}, | |
la = Object.prototype.hasOwnProperty; | |
if (ia == null) throw new TypeError(); | |
for (var ma in ia) | |
if (la.call(ia, ma) && !la.call(ja, ma)) ka[ma] = ia[ma]; | |
return ka; | |
})(fa, { | |
text: 1 | |
}); | |
return Object.assign({}, ha, { | |
length: ga.length | |
}); | |
}); | |
var ba = w.getSelection(); | |
u.addNormal('content_state', JSON.stringify(aa)); | |
u.addNormal('selection_state', ba.serialize()); | |
u.addNormal('error_text', s.message); | |
var ca = n(x); | |
u.addNormal('node_html', ca); | |
var da = q(x); | |
u.addNormal('dom_selection', da); | |
u.post(); | |
} | |
}; | |
function n(s) { | |
if (!s) return '[empty]'; | |
var t = o(s); | |
if (t.nodeType === l) return t.textContent; | |
k(t instanceof Element); | |
return t.innerHTML; | |
} | |
function o(s) { | |
if (s.nodeType === l) { | |
var t = s.textContent.length; | |
return document.createTextNode('[text ' + t + ']'); | |
} | |
var u = s.cloneNode(), | |
v = s.childNodes; | |
for (var w = 0; w < v.length; w++) u.appendChild(o(v[w])); | |
return u; | |
} | |
function p() { | |
return new g('text_editor_error_log', null, { | |
addBrowserFields: true | |
}); | |
} | |
function q(s) { | |
if (!a.getSelection) return '[not available]'; | |
var t = a.getSelection(), | |
u = t.anchorNode, | |
v = t.anchorOffset, | |
w = t.focusNode, | |
x = t.focusOffset; | |
u = r(u, s); | |
w = r(w, s); | |
return JSON.stringify({ | |
anchorNode: u, | |
anchorOffset: v, | |
focusNode: w, | |
focusOffset: x | |
}); | |
} | |
function r(s, t) { | |
if (!s) return '[none]'; | |
if (s === window) return '[window]'; | |
if (s === document.documentElement) return '[document]'; | |
if (s === document.body) return '[body]'; | |
if (!i(t, s)) { | |
var u = h.getID(s); | |
if (u) return '[outside root: ' + u + ']'; | |
var v = s.id; | |
return v ? '[outside root: ' + v + ']' : '[outside root]'; | |
} | |
return n(s); | |
} | |
e.exports = m; | |
}, null); | |
__d("setDocumentSelection", ["ErrorUtils", "TextEditorBanzai", "containsNode"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j(n, o, p, q, r) { | |
var s = [n, o, p, q, r]; | |
return g.applyWithGuard(k, null, s, function(t) { | |
return h.logSetSelectionError(t, s); | |
}, 'TextEditor:setSelection'); | |
} | |
function k(n, o, p, q, r) { | |
if (!i(document.documentElement, o)) return; | |
var s = a.getSelection(), | |
t = n.getAnchorKey(), | |
u = n.getAnchorOffset(), | |
v = n.getFocusKey(), | |
w = n.getFocusOffset(), | |
x = n.getIsBackward(); | |
if (!s.extend && x) { | |
var y = t, | |
z = u; | |
t = v; | |
u = w; | |
v = y; | |
w = z; | |
x = false; | |
} | |
var aa = (t === p && q <= u && r >= u), | |
ba = (v === p && q <= w && r >= w); | |
if (aa && ba) { | |
s.removeAllRanges(); | |
m(s, o, u - q); | |
l(s, o, w - q); | |
return; | |
} | |
if (!x) { | |
if (aa) { | |
s.removeAllRanges(); | |
m(s, o, u - q); | |
} | |
if (ba) l(s, o, w - q); | |
} else { | |
if (ba) { | |
s.removeAllRanges(); | |
m(s, o, w - q); | |
} | |
if (aa) { | |
var ca = s.focusNode, | |
da = s.focusOffset; | |
s.removeAllRanges(); | |
m(s, o, u - q); | |
l(s, ca, da); | |
} | |
} | |
} | |
function l(n, o, p) { | |
if (n.extend) { | |
n.extend(o, p); | |
} else { | |
var q = n.getRangeAt(0); | |
q.setEnd(o, p); | |
n.addRange(q.cloneRange()); | |
} | |
} | |
function m(n, o, p) { | |
var q = document.createRange(); | |
q.setStart(o, p); | |
n.addRange(q); | |
} | |
e.exports = j; | |
}, null); | |
__d("TextEditorLeaf.react", ["DocumentCharacters", "React", "SelectionState", "TextEditorTextNode.react", "setDocumentSelection"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = h, | |
m = l.PropTypes, | |
n = g.SOFT_NEWLINE, | |
o = 3, | |
p = h.createClass({ | |
displayName: "TextEditorLeaf", | |
propTypes: { | |
selection: m.instanceOf(i), | |
start: m.number.isRequired, | |
blockKey: m.string.isRequired, | |
text: m.string.isRequired, | |
style: m.number, | |
inlineStyleFn: m.func.isRequired, | |
isLast: m.bool.isRequired | |
}, | |
_setSelection: function() { | |
var q = this.props.selection; | |
if (q == null || !q.getHasFocus()) return; | |
var r = this.props.start, | |
s = r + this.props.text.length, | |
t = this.props.blockKey; | |
if (!q.hasEdgeWithin(t, r, s)) return; | |
var u = h.findDOMNode(this), | |
v = u.firstChild, | |
w; | |
if (v.nodeType === o) { | |
w = v; | |
} else if (v.tagName === 'BR') { | |
w = u; | |
} else w = v.firstChild; | |
k(q, w, t, r, s); | |
}, | |
shouldComponentUpdate: function(q) { | |
return (h.findDOMNode(this.refs.leaf).textContent !== q.text || q.forceSelection); | |
}, | |
componentDidUpdate: function() { | |
this._setSelection(); | |
}, | |
componentDidMount: function() { | |
this._setSelection(); | |
}, | |
render: function() { | |
var q = this.props.text; | |
if (q.endsWith(n) && this.props.isLast) q += n; | |
var r; | |
if (this.props.style) r = this.props.inlineStyleFn(this.props.style); | |
return (h.createElement("span", { | |
"data-offset-key": this.props.offsetKey, | |
className: r, | |
ref: "leaf" | |
}, h.createElement(j, null, q))); | |
} | |
}); | |
e.exports = p; | |
}, null); | |
__d("TextEditorBlock.react", ["ContentBlock", "DocumentOffsetKey", "ElementForBlockType", "React", "Scroll", "SelectionState", "Style", "TextEditorLeaf.react", "UnicodeBidiDirection", "cx", "getElementPosition", "getScrollPosition", "getViewportDimensions", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) { | |
b.__markCompiled && b.__markCompiled(); | |
var u = j, | |
v = u.PropTypes, | |
w = o.LTR, | |
x = o.RTL, | |
y = 10, | |
z = j.createClass({ | |
displayName: "TextEditorBlock", | |
propTypes: { | |
block: v.instanceOf(g).isRequired, | |
tree: v.object.isRequired, | |
selection: v.instanceOf(l).isRequired, | |
decorator: v.object, | |
forceSelection: v.bool.isRequired, | |
direction: v.string.isRequired, | |
blockProps: v.object, | |
startIndent: v.bool, | |
blockStyleFn: v.func.isRequired, | |
inlineStyleFn: v.func.isRequired | |
}, | |
shouldComponentUpdate: function(ba) { | |
return (this.props.block !== ba.block || this.props.tree !== ba.tree || this.props.direction !== ba.direction || (aa(ba.selection, ba.block.getKey()) && ba.forceSelection)); | |
}, | |
componentDidMount: function() { | |
var ba = this.props.selection, | |
ca = ba.getEndKey(); | |
if (!ba.getHasFocus() || ca !== this.props.block.getKey()) return; | |
var da = j.findDOMNode(this), | |
ea = m.getScrollParent(da), | |
fa = r(ea), | |
ga; | |
if (ea === window) { | |
var ha = q(da), | |
ia = ha.y + ha.height, | |
ja = s().height; | |
ga = ia - ja; | |
if (ga > 0) window.scrollTo(fa.x, fa.y + ga + y); | |
} else { | |
var ka = da.offsetHeight + da.offsetTop, | |
la = ea.offsetHeight + fa.y; | |
ga = ka - la; | |
if (ga > 0) k.setTop(ea, k.getTop(ea) + ga + y); | |
} | |
}, | |
_renderChildren: function() { | |
var ba = this.props.block, | |
ca = ba.getKey(), | |
da = ba.getText(), | |
ea = this.props.tree.size - 1, | |
fa = aa(this.props.selection, ca); | |
return this.props.tree.map(function(ga, ha) { | |
var ia = ga.get('leaves'), | |
ja = ia.size - 1, | |
ka = ia.map(function(pa, qa) { | |
var ra = h.encode(ca, ha, qa), | |
sa = pa.get('start'), | |
ta = pa.get('end'); | |
return (j.createElement(n, { | |
key: ra, | |
offsetKey: ra, | |
blockKey: ca, | |
start: sa, | |
selection: fa ? this.props.selection : null, | |
forceSelection: this.props.forceSelection, | |
text: da.slice(sa, ta), | |
style: ba.getInlineStyleAt(sa), | |
inlineStyleFn: this.props.inlineStyleFn, | |
isLast: ha === ea && qa === ja | |
})); | |
}.bind(this)).toArray(), | |
la = ga.get('decoratorKey'); | |
if (la == null) return ka; | |
var ma = this.props.decorator.getComponentForKey(la); | |
if (!ma) return ka; | |
var na = this.props.decorator.getPropsForKey(la), | |
oa = h.encode(ca, ha, 0); | |
return (j.createElement(ma, j.__spread({}, na, { | |
key: oa, | |
entityKey: ba.getEntityAt(ga.get('start')), | |
offsetKey: oa | |
}), ka)); | |
}.bind(this)).toArray(); | |
}, | |
render: function() { | |
var ba = this.props.block, | |
ca = ba.getKey(), | |
da = ba.getDepth(), | |
ea = i.getElement(ba.getType()), | |
fa = t(this.props.blockStyleFn(ba.getType()), (("_209g") + (this.props.direction === w ? ' ' + "_2vxa" : '') + (this.props.direction === x ? ' ' + "_2vxb" : ''))); | |
if (ea === 'li') { | |
var ga = this.props.startIndent; | |
fa = t(fa, ((ga && da === 0 ? "_2yj9" : '') + (ga && da === 1 ? ' ' + "_2yja" : '') + (ga && da === 2 ? ' ' + "_2yjb" : '') + (ga && da === 3 ? ' ' + "_2yje" : '') + (ga && da === 4 ? ' ' + "_2yjf" : '') + (da === 0 ? ' ' + "_2yjg" : '') + (da === 1 ? ' ' + "_2yjh" : '') + (da === 2 ? ' ' + "_2yji" : '') + (da === 3 ? ' ' + "_2yjj" : '') + (da === 4 ? ' ' + "_2yjn" : ''))); | |
} | |
var ha = Object.assign({ | |
'data-block': true, | |
'data-offset-key': h.encode(ca, 0, 0), | |
className: fa | |
}, this.props.blockProps); | |
return (j.createElement(ea, j.__spread({}, ha), this._renderChildren())); | |
} | |
}); | |
function aa(ba, ca) { | |
return (ba.getAnchorKey() === ca || ba.getFocusKey() === ca); | |
} | |
e.exports = z; | |
}, null); | |
__d("TextEditorContents.react", ["DocumentOffsetKey", "EditorState", "ElementForBlockType", "React", "TextEditorBlock.react", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var m = j, | |
n = m.PropTypes, | |
o = j.createClass({ | |
displayName: "TextEditorContents", | |
propTypes: { | |
blockRendererFn: n.func, | |
blockStyleFn: n.func.isRequired, | |
editorState: n.instanceOf(h).isRequired, | |
inlineStyleFn: n.func.isRequired | |
}, | |
shouldComponentUpdate: function(q) { | |
var r = this.props.editorState, | |
s = q.editorState, | |
t = r.getDirectionMap(), | |
u = s.getDirectionMap(); | |
if (t !== u) return true; | |
var v = r.getSelection().getHasFocus(), | |
w = s.getSelection().getHasFocus(); | |
if (v !== w) return true; | |
var x = s.getNativelyRenderedContent(), | |
y = r.isInCompositionMode(), | |
z = s.isInCompositionMode(); | |
if (r === s || (x !== null && s.getCurrentContent() === x) || (y && z)) return false; | |
var aa = r.getCurrentContent(), | |
ba = s.getCurrentContent(), | |
ca = r.getDecorator(), | |
da = s.getDecorator(); | |
return (y !== z || aa !== ba || ca !== da || s.mustForceSelection()); | |
}, | |
render: function() { | |
var q = this.props.editorState, | |
r = q.getCurrentContent(), | |
s = q.getSelection(), | |
t = q.mustForceSelection(), | |
u = q.getDirectionMap(), | |
v = r.getBlocksAsArray(), | |
w = [], | |
x = null, | |
y = null, | |
z = null, | |
aa, ba, ca, da, ea, fa, ga, ha; | |
for (var ia = 0; ia < v.length; ia++) { | |
ca = v[ia]; | |
da = ca.getKey(); | |
ea = ca.getText(); | |
fa = ca.getType(); | |
var ja = this.props.blockRendererFn(ca) || p, | |
ka = ja.component, | |
la = ja.props; | |
aa = ka; | |
ga = j.createElement(aa, { | |
key: da, | |
tree: q.getBlockTree(da), | |
decorator: q.getDecorator(), | |
block: ca, | |
selection: s, | |
forceSelection: t, | |
direction: u.get(da), | |
blockProps: la, | |
startIndent: z === null || ca.getDepth() > z, | |
blockStyleFn: this.props.blockStyleFn, | |
inlineStyleFn: this.props.inlineStyleFn | |
}); | |
ha = i.getWrapperElement(fa); | |
if (ha) { | |
if (y !== ha) { | |
ba = []; | |
x = j.createElement(ha, { | |
className: "_4noe", | |
key: da + '-wrap', | |
"data-offset-key": g.encode(da, 0, 0) | |
}, ba); | |
y = ha; | |
w.push(x); | |
} | |
z = ca.getDepth(); | |
ba.push(ga); | |
} else { | |
ba = null; | |
x = null; | |
y = null; | |
z = null; | |
w.push(ga); | |
} | |
} | |
return j.createElement("div", { | |
"data-contents": "true" | |
}, w); | |
} | |
}), | |
p = { | |
component: k, | |
props: null | |
}; | |
e.exports = o; | |
}, null); | |
__d("DocumentRemovableWord", ["TokenizeUtil"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g.getPunctuation(); | |
h = h.replace("\'", "").slice(1, -1); | |
var i = '\\s' + h, | |
j = '^(' + '[' + i + ']*' + '[^' + i + ']+' + '|[' + i + ']+' + ')', | |
k = new RegExp(j), | |
l = '(' + '[^' + i + ']+' + '[' + i + ']*' + '|[' + i + ']+' + ')$', | |
m = new RegExp(l); | |
function n(p, q) { | |
var r = q ? m.exec(p) : k.exec(p); | |
return r ? r[0] : null; | |
} | |
var o = { | |
getBackward: function(p) { | |
return n(p, true); | |
}, | |
getForward: function(p) { | |
return n(p, false); | |
} | |
}; | |
e.exports = o; | |
}, null); | |
__d("TextEditorModes", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
var g = { | |
EDIT: 0, | |
COMPOSITE: 1, | |
DRAG: 2, | |
RENDER: 3, | |
CUT: 4 | |
}; | |
e.exports = g; | |
}, null); | |
__d("TextEditorPasteHandler", ["CharacterMetadata", "ComposedBlockType", "ComposedEntityMutability", "ComposedLinkEntityProperties", "ComposedEntityType", "ComposedInlineStyle", "ContentBlock", "DocumentCharacters", "DocumentEntity", "immutable", "URI", "arrayContains", "fillArray", "generateBlockKey", "getSafeBodyFromHTML"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) { | |
b.__markCompiled && b.__markCompiled(); | |
var v = h, | |
w = v.HEADER_ONE, | |
x = v.HEADER_TWO, | |
y = v.ORDERED_LIST_ITEM, | |
z = v.UNORDERED_LIST_ITEM, | |
aa = v.BLOCKQUOTE, | |
ba = v.UNSTYLED, | |
ca = l, | |
da = ca.BOLD, | |
ea = ca.ITALIC, | |
fa = ca.UNDERLINE, | |
ga = ca.CODE, | |
ha = ca.STRIKETHROUGH, | |
ia = ca.NONE, | |
ja = g, | |
ka = ja.EMPTY, | |
la = i, | |
ma = la.MUTABLE, | |
na = j, | |
oa = na.URL, | |
pa = k, | |
qa = pa.LINK, | |
ra = n, | |
sa = ra.BLOCK_DELIMITER, | |
ta = ra.SOFT_NEWLINE, | |
ua = p, | |
va = ua.List, | |
wa = ua.Repeat, | |
xa = ' ', | |
ya = ' ', | |
za = 4, | |
ab = new RegExp(sa, 'g'), | |
bb = new RegExp(ta, 'g'), | |
cb = new RegExp(xa, 'g'), | |
db = ['p', 'h1', 'h2', 'h3', 'li', 'blockquote', 'pre'], | |
eb = { | |
b: da, | |
code: ga, | |
del: ha, | |
em: ea, | |
i: ea, | |
s: ha, | |
strike: ha, | |
strong: da, | |
u: fa | |
}; | |
function fb() { | |
return { | |
text: '', | |
inlines: [], | |
entities: [], | |
blocks: [] | |
}; | |
} | |
function gb(rb) { | |
var sb = new Array(1); | |
if (rb) sb[0] = rb; | |
return { | |
text: ya, | |
inlines: [ia], | |
entities: sb, | |
blocks: [] | |
}; | |
} | |
function hb() { | |
return { | |
text: ta, | |
inlines: [ia], | |
entities: new Array(1), | |
blocks: [] | |
}; | |
} | |
function ib(rb, sb) { | |
return { | |
text: sa, | |
inlines: [ia], | |
entities: new Array(1), | |
blocks: [{ | |
type: rb, | |
depth: Math.max(0, Math.min(za, sb)) | |
}] | |
}; | |
} | |
function jb(rb, sb) { | |
switch (rb) { | |
case 'h1': | |
return w; | |
case 'h2': | |
return x; | |
case 'li': | |
if (sb === 'ol') return y; | |
return z; | |
case 'blockquote': | |
return aa; | |
case 'pre': | |
return h.CODE; | |
default: | |
return ba; | |
} | |
} | |
function kb(rb, sb, tb) { | |
var ub = eb[rb]; | |
if (ub) { | |
tb |= ub; | |
} else if (sb.style) { | |
tb |= sb.style.fontWeight === 'bold' ? da : 0; | |
tb |= sb.style.fontStyle === 'italic' ? ea : 0; | |
tb |= sb.style.textDecoration === 'underline' ? fa : 0; | |
tb |= (sb.style.textDecoration === 'line-through' ? ha : 0); | |
} | |
return tb; | |
} | |
function lb(rb, sb) { | |
if (rb.text.slice(-1) === sa && sb.text.slice(0, 1) === sa) { | |
rb.text = rb.text.slice(0, -1); | |
rb.inlines.pop(); | |
rb.entities.pop(); | |
rb.blocks.pop(); | |
} | |
if (rb.text.slice(-1) === sa && (sb.text === ya || sb.text === ta)) return rb; | |
return { | |
text: rb.text + sb.text, | |
inlines: rb.inlines.concat(sb.inlines), | |
entities: rb.entities.concat(sb.entities), | |
blocks: rb.blocks.concat(sb.blocks) | |
}; | |
} | |
function mb(rb) { | |
return db.some(function(sb) { | |
return rb.indexOf('<' + sb) !== -1; | |
}); | |
} | |
function nb(rb) { | |
var sb = new q(rb), | |
tb = sb.getProtocol(); | |
return (tb === 'http' || tb === 'https'); | |
} | |
function ob(rb, sb, tb, ub, vb, wb, xb) { | |
var yb = rb.nodeName.toLowerCase(), | |
zb = false, | |
ac = ba; | |
if (yb === '#text') { | |
var bc = rb.textContent; | |
if (bc.trim() === '' && ub !== 'pre') return gb(xb); | |
if (ub !== 'pre') bc = bc.replace(bb, ya); | |
return { | |
text: bc, | |
inlines: s(bc.length, sb), | |
entities: s(bc.length, xb), | |
blocks: [] | |
}; | |
} | |
if (yb === 'br') return hb(); | |
var cc = fb(), | |
dc; | |
sb = kb(yb, rb, sb); | |
if (yb === 'ul' || yb === 'ol') { | |
if (tb) wb += 1; | |
tb = yb; | |
} | |
if (!ub && r(vb, yb)) { | |
cc = ib(jb(yb, tb), wb); | |
ub = yb; | |
zb = true; | |
} else if (tb && ub === 'li' && yb === 'li') { | |
cc = ib(jb(yb, tb), wb); | |
ub = yb; | |
zb = true; | |
ac = tb === 'ul' ? z : y; | |
} | |
rb = rb.firstChild; | |
yb = rb && rb.nodeName.toLowerCase(); | |
var ec, fc, gc; | |
while (rb) { | |
if (yb === 'a' && rb.href && nb(rb.href)) { | |
fc = new q(rb.href).toString(); | |
gc = {}; | |
gc[oa] = fc; | |
ec = o.create(qa, ma, gc); | |
} else ec = undefined; | |
dc = ob(rb, sb, tb, ub, vb, wb, ec || xb); | |
cc = lb(cc, dc); | |
rb = rb.nextSibling; | |
if (rb && vb.indexOf(yb) >= 0 && ub) cc = lb(cc, hb()); | |
yb = rb && rb.nodeName.toLowerCase(); | |
} | |
if (zb) cc = lb(cc, ib(ac, wb)); | |
return cc; | |
} | |
function pb(rb) { | |
rb = rb.trim().replace(ab, '').replace(cb, ya); | |
var sb = u(rb); | |
if (!sb) return null; | |
var tb = mb(rb) ? db : ['div'], | |
ub = ob(sb, ia, 'ul', null, tb, -1); | |
if (ub.text.indexOf(sa) === 0) ub = { | |
text: ub.text.slice(1), | |
inlines: ub.inlines.slice(1), | |
entities: ub.entities.slice(1), | |
blocks: ub.blocks | |
}; | |
if (ub.text.slice(-1) === sa) { | |
ub.text = ub.text.slice(0, -1); | |
ub.inlines = ub.inlines.slice(0, -1); | |
ub.entities = ub.entities.slice(0, -1); | |
ub.blocks.pop(); | |
} | |
if (ub.blocks.length === 0) ub.blocks.push({ | |
type: ba, | |
depth: 0 | |
}); | |
if (ub.text.split(sa).length === ub.blocks.length + 1) ub.blocks.unshift({ | |
type: ba, | |
depth: 0 | |
}); | |
return ub; | |
} | |
var qb = { | |
processHTML: function(rb) { | |
var sb = pb(rb); | |
if (!sb) return null; | |
var tb = 0; | |
return sb.text.split(sa).map(function(ub, vb) { | |
var wb = tb + ub.length, | |
xb = sb.inlines.slice(tb, wb), | |
yb = sb.entities.slice(tb, wb), | |
zb = va(xb.map(function(ac, bc) { | |
var cc = { | |
style: ac | |
}; | |
if (yb[bc]) cc.entity = yb[bc]; | |
return new g(cc); | |
})); | |
tb = wb + 1; | |
return new m({ | |
key: t(), | |
type: sb.blocks[vb].type, | |
depth: sb.blocks[vb].depth, | |
text: ub, | |
characterList: zb | |
}); | |
}); | |
}, | |
processText: function(rb) { | |
return rb.map(function(sb) { | |
return new m({ | |
key: t(), | |
type: ba, | |
text: sb, | |
characterList: va(wa(ka, sb.length)) | |
}); | |
}); | |
} | |
}; | |
e.exports = qb; | |
}, null); | |
__d("getSelectionOffsetKeyForNode", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function g(h) { | |
return h instanceof Element ? h.getAttribute('data-offset-key') : null; | |
} | |
e.exports = g; | |
}, null); | |
__d("findAncestorOffsetKey", ["getSelectionOffsetKeyForNode"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i) { | |
while (i && i !== document.documentElement) { | |
var j = g(i); | |
if (j != null) return j; | |
i = i.parentNode; | |
} | |
return null; | |
} | |
e.exports = h; | |
}, null); | |
__d("getUpdatedSelectionState", ["DocumentOffsetKey"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i, j, k, l, m) { | |
var n = i.getSelection(), | |
o = g.decode(j), | |
p = o.blockKey, | |
q = i.getBlockTree(p).getIn([o.decoratorKey, 'leaves', o.leafKey]), | |
r = g.decode(l), | |
s = r.blockKey, | |
t = i.getBlockTree(s).getIn([r.decoratorKey, 'leaves', r.leafKey]), | |
u = q.get('start'), | |
v = t.get('start'), | |
w = q ? u + k : null, | |
x = t ? v + m : null, | |
y = (n.getAnchorKey() === p && n.getAnchorOffset() === w && n.getFocusKey() === s && n.getFocusOffset() === x); | |
if (y) return n; | |
var z = false; | |
if (p === s) { | |
var aa = q.get('end'), | |
ba = t.get('end'); | |
if (v === u && ba === aa) { | |
z = m < k; | |
} else z = v < u; | |
} else { | |
var ca = i.getCurrentContent().getBlockMap().keySeq().skipUntil(function(da) { | |
return da === p || da === s; | |
}).first(); | |
z = ca === s; | |
} | |
return n.merge({ | |
anchorKey: p, | |
anchorOffset: w, | |
focusKey: s, | |
focusOffset: x, | |
isBackward: z | |
}); | |
} | |
e.exports = h; | |
}, null); | |
__d("getDocumentSelection", ["DocumentCharacters", "ErrorUtils", "TextEditorBanzai", "findAncestorOffsetKey", "getSelectionOffsetKeyForNode", "getUpdatedSelectionState", "invariant", "nullthrows"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var o = g, | |
p = o.SOFT_NEWLINE; | |
function q(w, x) { | |
var y = [w, x]; | |
return h.applyWithGuard(r, null, y, function(z) { | |
return i.logGetSelectionError(z, y); | |
}, 'TextEditor:getSelection'); | |
} | |
function r(w, x) { | |
var y = a.getSelection(); | |
if (y.rangeCount === 0) return { | |
selectionState: w.getSelection().set('hasFocus', false), | |
needsRecovery: false | |
}; | |
var z = y.anchorNode, | |
aa = y.focusNode, | |
ba = y.anchorOffset, | |
ca = y.focusOffset, | |
da = z.nodeType === Node.TEXT_NODE, | |
ea = aa.nodeType === Node.TEXT_NODE; | |
if (da && ea) return { | |
selectionState: l(w, n(j(z)), ba, n(j(aa)), ca), | |
needsRecovery: false | |
}; | |
var fa = null, | |
ga = null; | |
if (da) { | |
fa = { | |
key: n(j(z)), | |
offset: ba | |
}; | |
ga = u(x, aa, ca); | |
} else if (ea) { | |
ga = { | |
key: n(j(aa)), | |
offset: ca | |
}; | |
fa = u(x, z, ba); | |
} else { | |
fa = u(x, z, ba); | |
ga = u(x, aa, ca); | |
} | |
return { | |
selectionState: l(w, fa.key, fa.offset, ga.key, ga.offset), | |
needsRecovery: true | |
}; | |
} | |
function s(w) { | |
while (w.firstChild && k(w.firstChild)) w = w.firstChild; | |
return w; | |
} | |
function t(w) { | |
while (w.lastChild && k(w.lastChild)) w = w.lastChild; | |
return w; | |
} | |
function u(w, x, y) { | |
var z = j(x); | |
m(z != null || w === x || w.firstChild === x); | |
if (w === x) { | |
x = x.firstChild; | |
m(x instanceof Element && x.getAttribute('data-contents') === 'true'); | |
if (y > 0) y = x.childNodes.length; | |
} | |
if (y === 0) return { | |
key: z || k(s(x)), | |
offset: 0 | |
}; | |
var aa = x.childNodes[y - 1], | |
ba, ca; | |
if (!k(aa)) { | |
ba = z; | |
ca = v(aa); | |
} else { | |
var da = t(aa); | |
ba = k(da); | |
ca = v(da); | |
} | |
return { | |
key: ba, | |
offset: ca | |
}; | |
} | |
function v(w) { | |
var x = w.textContent; | |
return x === p ? 0 : x.length; | |
} | |
e.exports = q; | |
}, null); | |
__d("getEntityKeyForSelection", ["ComposedEntityMutability", "DocumentEntity"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g, | |
j = i.MUTABLE; | |
function k(m, n) { | |
var o; | |
if (n.isCollapsed()) { | |
var p = n.getAnchorKey(), | |
q = n.getAnchorOffset(); | |
if (q > 0) { | |
o = m.getBlockForKey(p).getEntityAt(q - 1); | |
return l(o); | |
} | |
return null; | |
} | |
var r = n.getStartKey(), | |
s = n.getStartOffset(), | |
t = m.getBlockForKey(r); | |
o = s === t.getLength() ? null : t.getEntityAt(s); | |
return l(o); | |
} | |
function l(m) { | |
if (m) { | |
var n = h.get(m); | |
return n.getMutability() === j ? m : null; | |
} | |
return null; | |
} | |
e.exports = k; | |
}, null); | |
__d("getTextContentFromFiles", ["DocumentCharacters"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g.BLOCK_DELIMITER, | |
i = /\.textClipping$/, | |
j = { | |
'text/plain': true, | |
'text/html': true, | |
'text/rtf': true | |
}; | |
function k(m, n) { | |
var o = 0, | |
p = []; | |
m.forEach(function(q) { | |
l(q, function(r) { | |
o++; | |
r && p.push(r); | |
if (o == m.length) n(p.join(h)); | |
}); | |
}); | |
} | |
function l(m, n) { | |
if (!a.FileReader || (m.type && !(m.type in j))) { | |
n(''); | |
return; | |
} | |
if (m.type === '' && i.test(m.name)) { | |
n(m.name.replace(i, '')); | |
return; | |
} | |
var o = new FileReader(); | |
o.onload = function() { | |
n(o.result); | |
}; | |
o.onerror = function() { | |
n(''); | |
}; | |
o.readAsText(m); | |
} | |
e.exports = k; | |
}, null); | |
__d("TextEditorEditHandler", ["BlockTree", "DataTransfer", "DocumentCharacters", "DocumentCommands", "DocumentModifier", "DocumentOffsetKey", "DocumentRemovableWord", "DocumentRemovalDirection", "EditorChangeType", "EditorState", "Keys", "React", "TextEditorModes", "TextEditorPasteHandler", "UnicodeUtils", "UserAgent", "areEqual", "createOrderedMapFromBlockArray", "findAncestorOffsetKey", "getActiveElement", "getContentStateFragment", "getDocumentSelection", "getEntityKeyForSelection", "getTextContentFromFiles", "isSelectionAtLeafStart"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da, ea) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var fa = i.SOFT_NEWLINE, | |
ga = v.isEngine('WebKit'), | |
ha = null, | |
ia = { | |
onFocus: function(jb) { | |
var kb = this.props.editorState, | |
lb = kb.getSelection(); | |
if (lb.getHasFocus()) return; | |
var mb = lb.set('hasFocus', true); | |
this.props.onFocus && this.props.onFocus(jb); | |
this.update(p.acceptSelection(kb, mb)); | |
}, | |
onBlur: function(jb) { | |
if (ga && z() === document.body) a.getSelection().removeAllRanges(); | |
var kb = this.props.editorState, | |
lb = kb.getSelection(); | |
if (!lb.getHasFocus()) return; | |
var mb = lb.set('hasFocus', false); | |
this.props.onBlur && this.props.onBlur(jb); | |
this.update(p.acceptSelection(kb, mb)); | |
}, | |
onBeforeInput: function(jb) { | |
var kb = jb.data; | |
if (!kb) return; | |
if (this.props.handleBeforeInput && this.props.handleBeforeInput(kb)) { | |
jb.preventDefault(); | |
return; | |
} | |
var lb = this.props.editorState, | |
mb = lb.getSelection(); | |
if (!mb.isCollapsed()) { | |
jb.preventDefault(); | |
this.update(ma(lb, kb, lb.getCurrentInlineStyle(), ca(lb.getCurrentContent(), lb.getSelection()))); | |
return; | |
} | |
var nb = !ea(lb), | |
ob = ma(lb, kb, lb.getCurrentInlineStyle(), ca(lb.getCurrentContent(), lb.getSelection())); | |
if (!nb) { | |
jb.preventDefault(); | |
this.update(ob); | |
return; | |
} | |
var pb = mb.getAnchorKey(), | |
qb = lb.getBlockTree(pb), | |
rb = g.getFingerprint(qb), | |
sb = g.getFingerprint(ob.getBlockTree(pb)); | |
if (ib(kb) || rb !== sb || (ob.getDirectionMap().get(pb) !== lb.getDirectionMap().get(pb))) { | |
jb.preventDefault(); | |
} else ob = p.set(ob, { | |
nativelyRenderedContent: ob.getCurrentContent() | |
}); | |
this.update(ob); | |
}, | |
onSelect: function(jb) { | |
if (this._blockSelectEvents) return; | |
var kb = this.props.editorState, | |
lb = ba(kb, r.findDOMNode(this.refs.editorContainer).firstChild), | |
mb = lb.selectionState; | |
if (mb !== kb.getSelection()) { | |
if (!!lb.needsRecovery) { | |
kb = p.forceSelection(kb, mb); | |
} else kb = p.acceptSelection(kb, mb); | |
this.update(kb); | |
} | |
}, | |
onKeyDown: function(jb) { | |
var kb = jb.which, | |
lb = this.props.editorState; | |
switch (kb) { | |
case q.RETURN: | |
jb.preventDefault(); | |
if (!this.props.handleReturn || !this.props.handleReturn(jb)) this.update(xa(lb)); | |
return; | |
case q.ESC: | |
jb.preventDefault(); | |
this.props.onEscape && this.props.onEscape(jb); | |
return; | |
case q.TAB: | |
this.props.onTab && this.props.onTab(jb); | |
return; | |
case q.UP: | |
this.props.onUpArrow && this.props.onUpArrow(jb); | |
return; | |
case q.DOWN: | |
this.props.onDownArrow && this.props.onDownArrow(jb); | |
return; | |
} | |
var mb = this.props.keyBindingFn(jb); | |
if (!mb) return; | |
jb.preventDefault(); | |
if (this.props.handleKeyCommand && this.props.handleKeyCommand(mb)) return; | |
if (mb === j.UNDO) { | |
ka(lb, this.update); | |
return; | |
} | |
var nb = ja(mb, lb); | |
if (nb !== lb) this.update(nb); | |
}, | |
onCharacterData: function(jb) { | |
var kb = y(jb), | |
lb = this.props.editorState, | |
mb = lb.getSelection(), | |
nb = lb.getCurrentContent(), | |
ob = l.decode(kb), | |
pb = ob.blockKey, | |
qb = lb.getBlockTree(pb), | |
rb = qb.getIn([ob.decoratorKey, 'leaves', ob.leafKey]), | |
sb = nb.getBlockForKey(pb); | |
if (sb.getText().slice(rb.start, rb.end) === jb.textContent) return; | |
var tb = lb.getSelection().merge({ | |
anchorOffset: rb.start, | |
focusOffset: rb.end, | |
isBackward: false | |
}), | |
ub = k.replaceText(nb, tb, jb.textContent, sb.getInlineStyleAt(rb.start), null), | |
vb = ba(this.props.editorState, r.findDOMNode(this.refs.editorContainer).firstChild), | |
wb = ub.merge({ | |
selectionBefore: mb, | |
selectionAfter: vb.selectionState | |
}); | |
this.update(p.push(lb, wb, o.INSERT_FRAGMENT)); | |
}, | |
onDragStart: function(jb) { | |
this._internalDrag = true; | |
this.setMode(s.DRAG); | |
}, | |
onDragOver: function(jb) { | |
this._internalDrag = false; | |
this.setMode(s.DRAG); | |
jb.preventDefault(); | |
}, | |
onCompositionStart: function(jb) { | |
this.setRenderGuard(); | |
this.setMode(s.COMPOSITE); | |
this.update(p.set(this.props.editorState, { | |
inCompositionMode: true | |
})); | |
}, | |
onCut: function(jb) { | |
var kb = this.props.editorState, | |
lb = kb.getSelection(); | |
if (lb.isCollapsed()) { | |
jb.preventDefault(); | |
return; | |
} | |
this.setRenderGuard(); | |
eb(kb, function(mb) { | |
this._clipboard = mb; | |
this.setMode(s.CUT); | |
setTimeout(function() { | |
this.restoreEditorDOM(); | |
this.removeRenderGuard(); | |
this.exitCurrentMode(); | |
this.update(db(kb)); | |
}.bind(this), 0); | |
}.bind(this)); | |
}, | |
onCopy: function() { | |
eb(this.props.editorState, function(jb) { | |
this._clipboard = jb; | |
}.bind(this)); | |
}, | |
onPaste: function(jb) { | |
jb.preventDefault(); | |
var kb = new h(jb.clipboardData); | |
if (!kb.isRichText()) { | |
var lb = kb.getFiles(), | |
mb = kb.getText(); | |
if (lb.length > 0) { | |
if (this.props.handlePastedFiles && this.props.handlePastedFiles(lb)) return; | |
da(lb, function(xb) { | |
xb = xb || mb; | |
if (!xb) return; | |
var yb = xb.split(fa), | |
zb = t.processText(yb), | |
ac = this.props.editorState, | |
bc = x(zb), | |
cc = k.replaceWithFragment(ac.getCurrentContent(), ac.getSelection(), bc); | |
this.update(p.push(ac, cc, o.INSERT_FRAGMENT)); | |
}.bind(this)); | |
return; | |
} | |
} | |
var nb, ob = kb.getText(); | |
this.props.onPasteRawText && this.props.onPasteRawText(ob); | |
if (ob) nb = ob.split(fa); | |
if (!this.props.stripPastedStyles) { | |
if (this._clipboard) { | |
var pb = nb.filter(bb), | |
qb = this._clipboard.toSeq().map(function(xb) { | |
return xb.getText(); | |
}).filter(bb).toArray(), | |
rb = w(pb, qb); | |
if (rb) { | |
this.update(cb(this.props.editorState, this._clipboard)); | |
return; | |
} | |
} | |
var sb = kb.getHTML(); | |
if (sb) { | |
var tb = t.processHTML(sb); | |
if (tb) { | |
var ub = x(tb); | |
this.update(cb(this.props.editorState, ub)); | |
return; | |
} | |
} | |
this._clipboard = null; | |
} | |
if (nb) { | |
var vb = t.processText(nb), | |
wb = x(vb); | |
this.update(cb(this.props.editorState, wb)); | |
} | |
} | |
}; | |
function ja(jb, kb) { | |
switch (jb) { | |
case j.UNDO: | |
return ka(kb); | |
case j.REDO: | |
return la(kb); | |
case j.DELETE: | |
return oa(kb); | |
case j.DELETE_WORD: | |
return pa(kb); | |
case j.BACKSPACE: | |
return sa(kb); | |
case j.BACKSPACE_WORD: | |
return va(kb); | |
case j.BACKSPACE_TO_END_OF_BLOCK: | |
return wa(kb); | |
case j.INSERT_BLOCK_DELIMITER: | |
return xa(kb); | |
case j.TRANSPOSE_CHARACTERS: | |
return ya(kb); | |
case j.MOVE_SELECTION_TO_START_OF_BLOCK: | |
return za(kb); | |
case j.MOVE_SELECTION_TO_END_OF_BLOCK: | |
return ab(kb); | |
case j.SECONDARY_CUT: | |
return qa(kb); | |
case j.SECONDARY_PASTE: | |
return ra(kb); | |
default: | |
return kb; | |
} | |
} | |
function ka(jb, kb) { | |
var lb = p.undo(jb); | |
if (!jb.getNativelyRenderedContent()) { | |
kb(lb); | |
return; | |
} | |
kb(p.set(jb, { | |
nativelyRenderedContent: null | |
})); | |
setTimeout(function() { | |
kb(lb); | |
}); | |
} | |
function la(jb) { | |
return p.redo(jb); | |
} | |
function ma(jb, kb, lb, mb) { | |
var nb = k.replaceText(jb.getCurrentContent(), jb.getSelection(), kb, lb, mb || null); | |
return p.push(jb, nb, o.INSERT_CHARACTERS); | |
} | |
function na(jb, kb, lb) { | |
var mb = jb.getSelection(), | |
nb = jb.getCurrentContent(), | |
ob = mb; | |
if (mb.isCollapsed()) { | |
if (lb === n.FORWARD) { | |
if (jb.isAtDocumentEnd()) return nb; | |
} else if (jb.isAtDocumentStart()) return nb; | |
ob = kb(jb); | |
if (ob === mb) return nb; | |
} | |
return k.removeRange(nb, ob, lb); | |
} | |
function oa(jb) { | |
var kb = na(jb, function(mb) { | |
var nb = mb.getSelection(), | |
ob = mb.getCurrentContent(), | |
pb = nb.getAnchorKey(), | |
qb = nb.getAnchorOffset(), | |
rb = ob.getBlockForKey(pb).getText()[qb]; | |
return ua(mb, rb ? u.getUTF16Length(rb, 0) : 1); | |
}, n.FORWARD); | |
if (kb === jb.getCurrentContent()) return jb; | |
kb = kb.set('selectionBefore', jb.getSelection()); | |
var lb = jb.getSelection().isCollapsed() ? o.DELETE_CHARACTER : o.REMOVE_RANGE; | |
return p.push(jb, kb, lb); | |
} | |
function pa(jb) { | |
var kb = na(jb, function(lb) { | |
var mb = lb.getSelection(), | |
nb = mb.getStartOffset(), | |
ob = mb.getStartKey(), | |
pb = lb.getCurrentContent(), | |
qb = pb.getBlockForKey(ob).getText().slice(nb), | |
rb = m.getForward(qb) || ''; | |
return ua(lb, rb.length || 1); | |
}, n.FORWARD); | |
if (kb === jb.getCurrentContent()) return jb; | |
return p.push(jb, kb, o.REMOVE_RANGE); | |
} | |
function qa(jb) { | |
var kb = jb.getCurrentContent(), | |
lb = jb.getSelection(), | |
mb; | |
if (lb.isCollapsed()) { | |
var nb = lb.getAnchorKey(), | |
ob = kb.getBlockForKey(nb).getLength(); | |
if (ob === lb.getAnchorOffset()) return jb; | |
mb = lb.set('focusOffset', ob); | |
} else mb = lb; | |
ha = aa(kb, mb); | |
var pb = k.removeRange(kb, mb, n.FORWARD); | |
if (pb === kb) return jb; | |
return p.push(jb, pb, o.REMOVE_RANGE); | |
} | |
function ra(jb) { | |
return (ha ? cb(jb, ha) : jb); | |
} | |
function sa(jb) { | |
var kb = na(jb, function(mb) { | |
var nb = mb.getSelection(), | |
ob = mb.getCurrentContent(), | |
pb = nb.getAnchorKey(), | |
qb = nb.getAnchorOffset(), | |
rb = ob.getBlockForKey(pb).getText()[qb - 1]; | |
return ta(mb, rb ? u.getUTF16Length(rb, 0) : 1); | |
}, n.BACKWARD); | |
if (kb === jb.getCurrentContent()) return jb; | |
kb = kb.set('selectionBefore', jb.getSelection()); | |
var lb = jb.getSelection().isCollapsed() ? o.BACKSPACE_CHARACTER : o.REMOVE_RANGE; | |
return p.push(jb, kb, lb); | |
} | |
function ta(jb, kb) { | |
var lb = jb.getSelection(), | |
mb = jb.getCurrentContent(), | |
nb = lb.getStartKey(), | |
ob = lb.getStartOffset(), | |
pb = nb, | |
qb; | |
if (kb > ob) { | |
var rb = mb.getKeyBefore(nb); | |
pb = rb; | |
var sb = mb.getBlockForKey(rb); | |
qb = sb.getText().length; | |
} else qb = ob - kb; | |
return lb.merge({ | |
focusKey: pb, | |
focusOffset: qb, | |
isBackward: true | |
}); | |
} | |
function ua(jb, kb) { | |
var lb = jb.getSelection(), | |
mb = lb.getStartKey(), | |
nb = lb.getStartOffset(), | |
ob = jb.getCurrentContent(), | |
pb = mb, | |
qb, rb = ob.getBlockForKey(mb); | |
if (kb > (rb.getText().length - nb)) { | |
pb = ob.getKeyAfter(mb); | |
qb = 0; | |
} else qb = nb + kb; | |
return lb.merge({ | |
focusKey: pb, | |
focusOffset: qb | |
}); | |
} | |
function va(jb) { | |
var kb = na(jb, function(lb) { | |
var mb = lb.getSelection(), | |
nb = mb.getStartOffset(); | |
if (nb === 0) return ta(lb, 1); | |
var ob = mb.getStartKey(), | |
pb = lb.getCurrentContent(), | |
qb = pb.getBlockForKey(ob).getText().slice(0, nb), | |
rb = m.getBackward(qb) || ''; | |
return ta(lb, rb.length || 1); | |
}, n.BACKWARD); | |
if (kb === jb.getCurrentContent()) return jb; | |
return p.push(jb, kb, o.REMOVE_RANGE); | |
} | |
function wa(jb) { | |
var kb = na(jb, function(lb) { | |
var mb = lb.getSelection(); | |
if (mb.getStartOffset() === 0) return ta(lb, 1); | |
return mb.merge({ | |
focusOffset: 0, | |
isBackward: true | |
}); | |
}, n.BACKWARD); | |
if (kb === jb.getCurrentContent()) return jb; | |
return p.push(jb, kb, o.REMOVE_RANGE); | |
} | |
function xa(jb) { | |
var kb = k.splitBlock(jb.getCurrentContent(), jb.getSelection()); | |
return p.push(jb, kb, o.SPLIT_BLOCK); | |
} | |
function ya(jb) { | |
var kb = jb.getSelection(); | |
if (!kb.isCollapsed()) return jb; | |
var lb = kb.getAnchorOffset(); | |
if (lb === 0) return jb; | |
var mb = kb.getAnchorKey(), | |
nb = jb.getCurrentContent(), | |
ob = nb.getBlockForKey(mb), | |
pb = ob.getLength(); | |
if (pb <= 1) return jb; | |
var qb, rb; | |
if (lb === pb) { | |
qb = kb.set('anchorOffset', lb - 1); | |
rb = kb; | |
} else { | |
qb = kb.set('focusOffset', lb + 1); | |
rb = qb.set('anchorOffset', lb + 1); | |
} | |
var sb = aa(nb, qb), | |
tb = k.removeRange(nb, qb, n.BACKWARD), | |
ub = tb.getSelectionAfter(), | |
vb = ub.getAnchorOffset() - 1, | |
wb = ub.merge({ | |
anchorOffset: vb, | |
focusOffset: vb | |
}), | |
xb = k.replaceWithFragment(tb, wb, sb), | |
yb = p.push(jb, xb, o.INSERT_FRAGMENT); | |
return p.acceptSelection(yb, rb); | |
} | |
function za(jb) { | |
var kb = jb.getSelection(), | |
lb = kb.getStartKey(); | |
return p.set(jb, { | |
selection: kb.merge({ | |
anchorKey: lb, | |
anchorOffset: 0, | |
focusKey: lb, | |
focusOffset: 0, | |
isBackward: false | |
}), | |
forceSelection: true | |
}); | |
} | |
function ab(jb) { | |
var kb = jb.getSelection(), | |
lb = kb.getEndKey(), | |
mb = jb.getCurrentContent(), | |
nb = mb.getBlockForKey(lb).getLength(); | |
return p.set(jb, { | |
selection: kb.merge({ | |
anchorKey: lb, | |
anchorOffset: nb, | |
focusKey: lb, | |
focusOffset: nb, | |
isBackward: false | |
}), | |
forceSelection: true | |
}); | |
} | |
function bb(jb) { | |
return jb.length > 0; | |
} | |
function cb(jb, kb) { | |
var lb = k.replaceWithFragment(jb.getCurrentContent(), jb.getSelection(), kb); | |
return p.push(jb, lb, o.INSERT_FRAGMENT); | |
} | |
function db(jb) { | |
var kb = k.removeRange(jb.getCurrentContent(), jb.getSelection(), n.FORWARD); | |
return p.push(jb, kb, o.REMOVE_RANGE); | |
} | |
function eb(jb, kb) { | |
var lb = jb.getSelection(); | |
if (!lb.isCollapsed()) kb(aa(jb.getCurrentContent(), lb)); | |
} | |
var fb = '\'', | |
gb = '\/', | |
hb = v.isBrowser('Firefox'); | |
function ib(jb) { | |
return (hb && (jb == fb || jb == gb)); | |
} | |
e.exports = ia; | |
}, null); | |
__d("TextEditorDragHandler", ["DataTransfer", "DocumentModifier", "EditorState", "EditorChangeType", "ex", "findAncestorOffsetKey", "getTextContentFromFiles", "getUpdatedSelectionState"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function o(event, s) { | |
var t, u; | |
if (document.caretRangeFromPoint) { | |
var v = document.caretRangeFromPoint(event.x, event.y); | |
t = v.startContainer; | |
u = v.startOffset; | |
} else if (event.rangeParent) { | |
t = event.rangeParent; | |
u = event.rangeOffset; | |
} else return null; | |
var w = l(t); | |
if (w === null) { | |
var x = ''; | |
if (t.dataset && t.dataset.reactid) x = ' Node ID: ' + t.dataset.reactid; | |
throw new Error(k('Invalid range for drop event.' + x + ' Offset: ' + u)); | |
} | |
return n(s, w, u, w, u); | |
} | |
var p = { | |
onDragEnd: function() { | |
this.exitCurrentMode(); | |
}, | |
onDrop: function(s) { | |
var t = new g(s.nativeEvent.dataTransfer), | |
u = this.props.editorState, | |
v = o(s.nativeEvent, u); | |
s.preventDefault(); | |
this.exitCurrentMode(); | |
if (v === null) return; | |
var w = t.getFiles(); | |
if (w.length > 0) { | |
if (this.props.handleDroppedFiles && this.props.handleDroppedFiles(v, w)) return; | |
m(w, function(x) { | |
x && this.update(r(u, v, x)); | |
}.bind(this)); | |
return; | |
} | |
if (this._internalDrag) { | |
this.update(q(u, v)); | |
return; | |
} | |
this.update(r(u, v, t.getText())); | |
} | |
}; | |
function q(s, t) { | |
var u = h.moveText(s.getCurrentContent(), s.getSelection(), t); | |
return i.push(s, u, j.INSERT_FRAGMENT); | |
} | |
function r(s, t, u) { | |
var v = h.insertText(s.getCurrentContent(), t, u, s.getCurrentInlineStyle()); | |
return i.push(s, v, j.INSERT_FRAGMENT); | |
} | |
e.exports = p; | |
}, null); | |
__d("AbstractTextEditor.react", ["AbstractTextEditorPlaceholder.react", "AbstractTextEditorProps", "DOMVector", "EditorState", "React", "TextEditorCompositionHandler", "TextEditorContents.react", "TextEditorEditHandler", "TextEditorDragHandler", "TextEditorModes", "UserAgent", "cx", "requestAnimationFrame", "setImmediate"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var u = a.MutationObserver || a.WebKitMutationObserver, | |
v = (q.isBrowser('Safari') || q.isBrowser('Mobile Safari')), | |
w = q.isBrowser('IE'), | |
x = !!u; | |
function y(ba) { | |
return function(ca) { | |
if (!this.props.readOnly) { | |
var da = this._handler && this._handler[ba]; | |
da && da.call(this, ca); | |
} | |
}; | |
} | |
function z(ba) { | |
switch (ba) { | |
case p.EDIT: | |
return n; | |
case p.COMPOSITE: | |
return l; | |
case p.DRAG: | |
return o; | |
case p.CUT: | |
case p.RENDER: | |
return null; | |
} | |
} | |
var aa = k.createClass({ | |
displayName: "AbstractTextEditor", | |
getDefaultProps: h.getDefaultProps, | |
_onBlur: y('onBlur'), | |
_onFocus: y('onFocus'), | |
_onSelect: y('onSelect'), | |
_onKeyDown: y('onKeyDown'), | |
_onKeyUp: y('onKeyUp'), | |
_onKeyPress: y('onKeyPress'), | |
_onMouseDown: y('onMouseDown'), | |
_onMouseUp: y('onMouseUp'), | |
_onCharacterData: y('onCharacterData'), | |
_onCompositionStart: y('onCompositionStart'), | |
_onCompositionEnd: y('onCompositionEnd'), | |
_onDragStart: y('onDragStart'), | |
_onDragOver: y('onDragOver'), | |
_onDragEnd: y('onDragEnd'), | |
_onDrop: y('onDrop'), | |
_onCut: y('onCut'), | |
_onCopy: y('onCopy'), | |
_onPaste: y('onPaste'), | |
_onBeforeInput: y('onBeforeInput'), | |
_attachMutationObserver: function() { | |
if (!u) return; | |
var ba = [], | |
ca = function() { | |
if (ba.length > 1) { | |
var da = ba[0], | |
ea = da.target; | |
t(function() { | |
if (this.isMounted() && ea.parentNode) this._onCharacterData(ea); | |
}.bind(this)); | |
} | |
ba.length = 0; | |
}.bind(this); | |
this._mutationObserver = new u(function(da) { | |
var ea; | |
if (this._guardAgainstRender) return; | |
if (v) { | |
if (ba.length === 0) s(ca); | |
(ea = ba).push.apply(ea, da); | |
} else { | |
ba = da; | |
ca(); | |
} | |
}.bind(this)); | |
this._mutationObserver.observe(k.findDOMNode(this.refs.editorContainer), { | |
characterDataOldValue: true, | |
characterData: true, | |
subtree: true | |
}); | |
}, | |
_disableIELinkDetection: function() { | |
if (w) document.execCommand('AutoUrlDetect', false, false); | |
}, | |
_renderPlaceholder: function() { | |
var ba = this.props.editorState.getCurrentContent(), | |
ca = (this.props.placeholder && !this.props.editorState.isInCompositionMode() && !ba.hasText()); | |
if (ca) return (k.createElement(g, { | |
text: this.props.placeholder, | |
editorState: this.props.editorState, | |
textAlignment: this.props.textAlignment | |
})); | |
}, | |
getInitialState: function() { | |
return { | |
containerKey: 0 | |
}; | |
}, | |
render: function() { | |
var ba = this.props.textAlignment, | |
ca = (("_5yw9") + (ba === 'left' ? ' ' + "_48yc" : '') + (ba === 'right' ? ' ' + "_48yd" : '') + (ba === 'center' ? ' ' + "_48ye" : '')), | |
da = this.props.editorState.getCurrentContent().hasText(); | |
return (k.createElement("div", { | |
className: ca | |
}, this._renderPlaceholder(), k.createElement("div", { | |
className: "_5ywa", | |
ref: "editorContainer", | |
key: 'editor' + this.state.containerKey | |
}, k.createElement("div", { | |
ref: "editor", | |
title: da ? null : this.props.placeholder, | |
role: this.props.readOnly ? null : (this.props.role || "textbox"), | |
"aria-label": this.props.ariaLabel, | |
"aria-activedescendant": this.props.readOnly ? null : this.props.ariaActiveDescendantID, | |
"aria-autocomplete": this.props.readOnly ? null : this.props.ariaAutoComplete, | |
"aria-expanded": this.props.readOnly ? null : this.props.ariaExpanded, | |
"aria-owns": this.props.readOnly ? null : this.props.ariaOwneeID, | |
"aria-haspopup": this.props.readOnly ? null : this.props.ariaHasPopup, | |
className: "_54-z", | |
"data-testid": this.props.webDriverTestID, | |
onBlur: this._onBlur, | |
onFocus: this._onFocus, | |
onSelect: this._onSelect, | |
onMouseUp: this._onMouseUp, | |
onKeyDown: this._onKeyDown, | |
onKeyUp: this._onKeyUp, | |
onKeyPress: this._onKeyPress, | |
onCut: this._onCut, | |
onCopy: this._onCopy, | |
onPaste: this._onPaste, | |
onDragStart: this._onDragStart, | |
onDragOver: this._onDragOver, | |
onDragEnd: this._onDragEnd, | |
onDrop: this._onDrop, | |
onCompositionStart: this._onCompositionStart, | |
onCompositionEnd: this._onCompositionEnd, | |
onBeforeInput: this._onBeforeInput, | |
spellCheck: x && this.props.spellCheck, | |
tabIndex: this.props.tabIndex, | |
contentEditable: !this.props.readOnly | |
}, k.createElement(m, { | |
blockRendererFn: this.props.blockRendererFn, | |
blockStyleFn: this.props.blockStyleFn, | |
editorState: this.props.editorState, | |
inlineStyleFn: this.props.inlineStyleFn | |
}))))); | |
}, | |
focus: function() { | |
var ba = this.props.editorState, | |
ca = ba.getSelection().getHasFocus(), | |
da = i.getScrollPosition(); | |
this.refs.editor.focus(); | |
window.scrollTo(da.x, da.y); | |
if (ca) return; | |
this.update(j.forceSelection(ba, ba.getSelection())); | |
}, | |
blur: function() { | |
k.findDOMNode(this.refs.editor).blur(); | |
}, | |
componentDidMount: function() { | |
this._clipboard = null; | |
this._guardAgainstRender = false; | |
this._handler = n; | |
this._attachMutationObserver(); | |
this._disableIELinkDetection(); | |
}, | |
componentWillUpdate: function(ba) { | |
this._blockSelectEvents = true; | |
}, | |
componentDidUpdate: function() { | |
this._blockSelectEvents = false; | |
}, | |
componentWillUnmount: function() { | |
if (this._mutationObserver) { | |
this._mutationObserver.disconnect(); | |
this._mutationObserver = null; | |
} | |
}, | |
setMode: function(ba) { | |
this._handler = z(ba); | |
}, | |
exitCurrentMode: function() { | |
this.setMode(p.EDIT); | |
}, | |
restoreEditorDOM: function() { | |
this.setState({ | |
containerKey: this.state.containerKey + 1 | |
}, this.focus); | |
}, | |
setRenderGuard: function() { | |
this._guardAgainstRender = true; | |
}, | |
removeRenderGuard: function() { | |
this._guardAgainstRender = false; | |
}, | |
update: function(ba) { | |
this.props.onChange(ba); | |
} | |
}); | |
e.exports = aa; | |
}, null); | |
__d("AbstractMentionsTextEditor.react", ["AbstractTextEditor.react", "AbstractTextEditorProps", "DocumentModifier", "EditorChangeType", "EditorState", "React", "TypeaheadNavigation", "clearImmediate", "getOrCreateDOMID", "setImmediate", "uniqueID"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
var r = l, | |
s = r.PropTypes, | |
t = 5, | |
u = l.createClass({ | |
displayName: "AbstractMentionsTextEditor", | |
propTypes: Object.assign({}, h.propTypes, { | |
mentionsSource: s.object, | |
mentionCreationFn: s.func.isRequired, | |
mentionResultsComponent: s.func.isRequired, | |
mentionResultsProps: s.object, | |
excludedEntries: s.object, | |
handleContentReturn: s.func, | |
onAddMention: s.func, | |
onShowMentions: s.func, | |
maxResults: s.number | |
}), | |
getDefaultProps: function() { | |
var w = g.getDefaultProps(); | |
return Object.assign({}, w, { | |
maxResults: t | |
}); | |
}, | |
componentWillMount: function() { | |
this._viewID = q(); | |
this._searchTimeouts = []; | |
}, | |
componentWillUnmount: function() { | |
this._searchTimeouts.forEach(function(w) { | |
return n(w); | |
}); | |
this._searchTimeouts = null; | |
}, | |
getInitialState: function() { | |
return { | |
highlightedMentionable: null, | |
ariaActiveDescendantID: null, | |
mentionableEntries: null, | |
characterOffset: 0 | |
}; | |
}, | |
_onShowMentions: function(w, x) { | |
if (!this.isMounted()) return; | |
var y = w && w.length; | |
if (!y) { | |
this.setState({ | |
highlightedMentionable: null, | |
activeDescendantID: null, | |
mentionableEntries: null, | |
characterOffset: 0 | |
}); | |
return; | |
} | |
var z = w.slice(0, this.props.maxResults), | |
aa = this.props.typeaheadViewProps; | |
if (aa && aa.mentionSortFn) z.sort(aa.mentionSortFn); | |
this.setState({ | |
highlightedMentionable: w[0], | |
mentionableEntries: z, | |
characterOffset: x | |
}); | |
if (this.props.onShowMentions) this.props.onShowMentions(z, x); | |
}, | |
_onBlur: function(w) { | |
this.setState(this.getInitialState()); | |
this.props.onBlur && this.props.onBlur(w); | |
}, | |
_onFocus: function(w) { | |
this.props.mentionsSource && this.props.mentionsSource.bootstrap(); | |
this.props.onFocus && this.props.onFocus(w); | |
}, | |
_handleReturn: function(w) { | |
if (this.state.highlightedMentionable) { | |
this._onMentionSelect(this.state.highlightedMentionable, w); | |
return true; | |
} else if (this.props.handleContentReturn && this.props.handleContentReturn(w)) return true; | |
return false; | |
}, | |
_onTab: function(w) { | |
if (this.state.highlightedMentionable) { | |
w.preventDefault(); | |
this._onMentionSelect(this.state.highlightedMentionable, w); | |
} else if (this.props.onTab) this.props.onTab(w); | |
}, | |
_onEscape: function(w) { | |
if (this.props.onEscape) this.props.onEscape(w); | |
if (this.state.mentionableEntries) { | |
w.stopPropagation(); | |
this.setState(this.getInitialState()); | |
} | |
}, | |
_onUpArrow: function(w) { | |
if (this.state.mentionableEntries) { | |
w.preventDefault(); | |
m.moveUp(this.state.mentionableEntries, this.state.highlightedMentionable, this._onMentionHighlight); | |
} else this.props.onUpArrow && this.props.onUpArrow(w); | |
}, | |
_onDownArrow: function(w) { | |
if (this.state.mentionableEntries) { | |
w.preventDefault(); | |
m.moveDown(this.state.mentionableEntries, this.state.highlightedMentionable, this._onMentionHighlight); | |
} else this.props.onDownArrow && this.props.onDownArrow(w); | |
}, | |
_onMentionHighlight: function(w) { | |
this.setState({ | |
highlightedMentionable: w | |
}); | |
}, | |
_onMentionRenderHighlight: function(w) { | |
var x = o(w); | |
this.setState({ | |
ariaActiveDescendantID: x | |
}); | |
}, | |
_onMentionSelect: function(w, x) { | |
var y = this.props.editorState, | |
z = y.getSelection(), | |
aa = y.getCurrentContent(), | |
ba = z.getAnchorKey(), | |
ca = z.getAnchorOffset(), | |
da = aa.getBlockMap().get(ba), | |
ea = ca - v(da.getText().substr(0, ca), w.getTitle(), this.state.characterOffset), | |
fa = i.replaceText(aa, z.set('anchorOffset', ea), w.getTitle(), y.getCurrentInlineStyle(), this.props.mentionCreationFn(w)), | |
ga = k.push(y, fa, j.INSERT_FRAGMENT); | |
this.props.onChange(ga); | |
this.setState(this.getInitialState()); | |
if (this.props.onAddMention) { | |
var ha = this.state.mentionableEntries.indexOf(w); | |
this.props.onAddMention(w, ha, x); | |
} | |
}, | |
shouldComponentUpdate: function(w, x) { | |
return (this.props.editorState !== w.editorState || this.props.placeholder !== w.placeholder || this.props.readOnly !== w.readOnly || this.state.mentionableEntries !== x.mentionableEntries || this.state.highlightedMentionable !== x.highlightedMentionable || this.state.ariaActiveDescendantID !== x.ariaActiveDescendantID); | |
}, | |
componentDidUpdate: function(w) { | |
var x = this.props.editorState; | |
if (x === w.editorState) return; | |
var y = x.getSelection(); | |
if (y.getHasFocus() && y.isCollapsed()) { | |
var z = x.getCurrentContent(); | |
if (this.props.mentionsSource) this._searchTimeouts.push(p(function() { | |
this.props.mentionsSource.search(z, y, this._onShowMentions); | |
}.bind(this))); | |
} | |
}, | |
blur: function() { | |
this.refs.abstractTextEditor.blur(); | |
}, | |
focus: function() { | |
this.refs.abstractTextEditor.focus(); | |
}, | |
_renderMentionables: function() { | |
var w = this.state.mentionableEntries; | |
if (!w || !w.length) return null; | |
var x = this.props.mentionResultsComponent; | |
return (l.createElement(x, l.__spread({}, this.props.mentionResultsProps, { | |
viewID: this._viewID, | |
selection: this.props.editorState.getSelection(), | |
contextComponent: this, | |
characterOffset: this.state.characterOffset, | |
mentionableEntries: w || [], | |
highlightedMentionable: this.state.highlightedMentionable, | |
onMentionSelect: this._onMentionSelect, | |
onMentionHighlight: this._onMentionHighlight, | |
onMentionRenderHighlight: this._onMentionRenderHighlight | |
}))); | |
}, | |
render: function() { | |
var w = this.state.mentionableEntries, | |
x = !!(w && w.length), | |
y = this.props.readOnly ? null : '-2'; | |
return (l.createElement("div", { | |
ref: "container", | |
className: this.props.className, | |
tabIndex: y | |
}, l.createElement(g, l.__spread({}, this.props, { | |
ref: "abstractTextEditor", | |
role: "combobox", | |
ariaActiveDescendantID: this.state.ariaActiveDescendantID, | |
ariaAutoComplete: "list", | |
ariaOwneeID: this._viewID, | |
ariaExpanded: x, | |
ariaHasPopup: x, | |
onBlur: this._onBlur, | |
onFocus: this._onFocus, | |
onTab: this._onTab, | |
onEscape: this._onEscape, | |
onDownArrow: this._onDownArrow, | |
onUpArrow: this._onUpArrow, | |
handleReturn: this._handleReturn | |
})), this._renderMentionables())); | |
} | |
}); | |
function v(w, x, y) { | |
for (var z = y; z <= x.length; z++) | |
if (w.substr(-z) == x.substr(0, z)) y = z; | |
return y; | |
} | |
e.exports = u; | |
}, null); | |
__d("createMentionEntity", ["ComposedEntityMutability", "ComposedEntityType", "DocumentEntity"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
function j(k) { | |
if (k.getType().toLowerCase() === 'hashtag') return i.create(h.HASHTAG, g.IMMUTABLE); | |
var l = k.getType().toLowerCase() === 'user' ? g.SEGMENTED : g.IMMUTABLE, | |
m = k.getAuxiliaryData(); | |
return i.create(h.MENTION, l, { | |
id: k.getUniqueID(), | |
isWeak: m && m.renderType === 'non_member', | |
type: k.getType() | |
}); | |
} | |
e.exports = j; | |
}, null); | |
__d("MentionsInput.react", ["AbstractMentionsTextEditor.react", "EditorState", "MentionsLayer.react", "React", "createMentionEntity", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = j, | |
o = n.PropTypes, | |
p = j.createClass({ | |
displayName: "MentionsInput", | |
propTypes: { | |
editorState: o.instanceOf(h).isRequired, | |
mentionsSource: o.object, | |
typeaheadView: o.func.isRequired, | |
typeaheadViewPropTypes: o.object, | |
spellCheck: o.bool, | |
placeholder: o.string, | |
className: o.string, | |
autoflip: o.bool, | |
position: o.oneOf(['above', 'below']), | |
handleContentReturn: o.func, | |
handleDroppedFiles: o.func, | |
handlePastedFiles: o.func, | |
onAddMention: o.func, | |
onShowMentions: o.func, | |
onChange: o.func, | |
onInputFocus: o.func, | |
onInputBlur: o.func | |
}, | |
blur: function() { | |
this.refs.textEditor.blur(); | |
}, | |
focus: function() { | |
clearTimeout(this._focusTimer); | |
this._focusTimer = setTimeout(function() { | |
this.refs.textEditor.focus(); | |
}.bind(this), 0); | |
}, | |
componentWillUnmount: function() { | |
clearTimeout(this._focusTimer); | |
}, | |
render: function() { | |
var q = m(this.props.className, "_5yk1"); | |
return (j.createElement("div", { | |
className: q, | |
onClick: this.focus, | |
onFocus: this.focus | |
}, j.createElement(g, j.__spread({}, this.props, { | |
mentionResultsComponent: i, | |
mentionResultsProps: { | |
typeaheadView: this.props.typeaheadView, | |
typeaheadViewProps: this.props.typeaheadViewProps, | |
autoflip: this.props.autoflip, | |
position: this.props.position | |
}, | |
mentionCreationFn: k, | |
ref: "textEditor", | |
className: "_5yk2", | |
stripPastedStyles: true | |
})))); | |
} | |
}); | |
e.exports = p; | |
}, null); | |
__d("DevxFluxDispatcher", ["Dispatcher"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
for (var h in g) | |
if (g.hasOwnProperty(h)) j[h] = g[h]; | |
var i = g === null ? null : g.prototype; | |
j.prototype = Object.create(i); | |
j.prototype.constructor = j; | |
j.__superConstructor__ = g; | |
function j() { | |
if (g !== null) g.apply(this, arguments); | |
} | |
j.prototype.handleServerAction = function(k) { | |
this.$DevxFluxDispatcher0('serverAction', k); | |
}; | |
j.prototype.handleViewAction = function(k) { | |
this.$DevxFluxDispatcher0('viewAction', k); | |
}; | |
j.prototype.$DevxFluxDispatcher0 = function(k, l) { | |
this.dispatch(Object.assign({ | |
source: k | |
}, l)); | |
}; | |
e.exports = new j(); | |
}, null); | |
__d("DevxProxyActions", ["DevxFluxDispatcher"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i) { | |
Object.keys(i.ActionHandler).forEach(function(j) { | |
this[j] = function() { | |
for (var k = [], l = 0, m = arguments.length; l < m; l++) k.push(arguments[l]); | |
g.handleViewAction({ | |
action: j, | |
args: k | |
}); | |
}; | |
}.bind(this)); | |
} | |
e.exports = h; | |
}, null); | |
__d("ContentState", ["DocumentCharacters", "immutable"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = h, | |
j = i.OrderedMap, | |
k = i.Record; | |
j; | |
var l = g, | |
m = l.SOFT_NEWLINE, | |
n = { | |
blockMap: null, | |
selectionBefore: null, | |
selectionAfter: null | |
}, | |
o = k(n); | |
for (var p in o) | |
if (o.hasOwnProperty(p)) r[p] = o[p]; | |
var q = o === null ? null : o.prototype; | |
r.prototype = Object.create(q); | |
r.prototype.constructor = r; | |
r.__superConstructor__ = o; | |
function r() { | |
if (o !== null) o.apply(this, arguments); | |
} | |
r.prototype.getBlockMap = function() { | |
return this.blockMap; | |
}; | |
r.prototype.getSelectionBefore = function() { | |
return this.selectionBefore; | |
}; | |
r.prototype.getSelectionAfter = function() { | |
return this.selectionAfter; | |
}; | |
r.prototype.getBlockForKey = function(s) { | |
var t = this.getBlockMap().get(s); | |
return t; | |
}; | |
r.prototype.getKeyBefore = function(s) { | |
return this.getBlockMap().reverse().keySeq().skipUntil(function(t) { | |
return t === s; | |
}).skip(1).first(); | |
}; | |
r.prototype.getKeyAfter = function(s) { | |
return this.getBlockMap().keySeq().skipUntil(function(t) { | |
return t === s; | |
}).skip(1).first(); | |
}; | |
r.prototype.getBlockAfter = function(s) { | |
return this.getBlockMap().skipUntil(function(t, u) { | |
return u === s; | |
}).skip(1).first(); | |
}; | |
r.prototype.getBlockBefore = function(s) { | |
return this.getBlockMap().reverse().skipUntil(function(t, u) { | |
return u === s; | |
}).skip(1).first(); | |
}; | |
r.prototype.getBlocksAsArray = function() { | |
return this.getBlockMap().toArray(); | |
}; | |
r.prototype.getLastBlock = function() { | |
return this.getBlockMap().last(); | |
}; | |
r.prototype.getPlainText = function(s) { | |
return this.getBlockMap().map(function(t) { | |
return t ? t.getText() : ''; | |
}).join(s || m); | |
}; | |
r.prototype.hasText = function() { | |
var s = this.getBlockMap(); | |
return (s.size > 1 || s.first().getLength() > 0); | |
}; | |
e.exports = r; | |
}, null); | |
__d("createEmptySelectionState", ["SelectionState"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i) { | |
return new g({ | |
anchorKey: i, | |
anchorOffset: 0, | |
focusKey: i, | |
focusOffset: 0, | |
isBackward: false, | |
hasFocus: false | |
}); | |
} | |
e.exports = h; | |
}, null); | |
__d("createContentStateFromBlocks", ["ContentState", "createEmptySelectionState", "createOrderedMapFromBlockArray"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j(k) { | |
var l = i(k), | |
m = h(l.first().getKey()); | |
return new g({ | |
blockMap: l, | |
selectionBefore: m, | |
selectionAfter: m | |
}); | |
} | |
e.exports = j; | |
}, null); | |
__d("createInitialEditorState", ["EditorState", "immutable", "createEmptySelectionState"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = h, | |
k = j.Stack; | |
function l(m, n) { | |
var o = m.getBlockMap().first().getKey(); | |
return g.create({ | |
currentContent: m, | |
undoStack: k(), | |
redoStack: k(), | |
decorator: n || null, | |
selection: i(o) | |
}); | |
} | |
e.exports = l; | |
}, null); | |
__d("createPlainBlocksFromText", ["CharacterMetadata", "ComposedBlockType", "ContentBlock", "immutable", "generateBlockKey"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = j, | |
m = l.List, | |
n = l.Repeat, | |
o = g, | |
p = o.EMPTY, | |
q = h, | |
r = q.UNSTYLED; | |
function s(t) { | |
return t.map(function(u) { | |
var v = u.length; | |
return new i({ | |
key: k(), | |
text: u, | |
type: r, | |
characterList: m(n(p, v)) | |
}); | |
}); | |
} | |
e.exports = s; | |
}, null); | |
__d("createEditorStateWithEntities", ["DocumentCharacters", "EditorState", "applyEntityToContentBlock", "createContentStateFromBlocks", "createInitialEditorState", "createPlainBlocksFromText"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = new RegExp(g.SOFT_NEWLINE, 'ig'); | |
function n(o) { | |
var p = o, | |
q = p.text, | |
r = p.ranges, | |
s = p.decorator, | |
t = p.entityCreationFn, | |
u = p.splitIntoBlocks, | |
v = p.allowUndo, | |
w, x; | |
if (u === undefined) u = true; | |
if (q) { | |
w = u ? q.split(m) : [q]; | |
x = []; | |
var y = 0; | |
w.forEach(function(ba) { | |
x.push(y); | |
y += ba.length + 1; | |
}); | |
} else w = ['']; | |
var z = l(w); | |
if (r && r.length && t) r.forEach(function(ba) { | |
var ca = t(ba.entity); | |
if (ca === null) return; | |
var da = ba.offset, | |
ea, fa; | |
for (var ga = 0; ga < x.length; ga++) { | |
var ha = x[ga], | |
ia = x[ga + 1]; | |
if (ia === undefined || (da >= ha && da < ia)) { | |
ea = z[ga]; | |
fa = da - ha; | |
break; | |
} | |
} | |
z[ga] = i(ea, fa, fa + ba.length, ca); | |
}); | |
var aa = k(j(z), s); | |
if (v === false) aa = h.set(aa, { | |
allowUndo: false | |
}); | |
return aa; | |
} | |
e.exports = n; | |
}, null); | |
__d("createEmptyEditorState", ["createContentStateFromBlocks", "createInitialEditorState", "createPlainBlocksFromText"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j(k) { | |
var l = i(['']), | |
m = g(l); | |
return h(m, k); | |
} | |
e.exports = j; | |
}, null); | |
__d("getVisibleValueForContentState", ["ComposedEntityType", "DocumentCharacters", "DocumentEntity", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = g.EMOTICON, | |
l = h.SOFT_NEWLINE; | |
function m(n) { | |
var o = n.getBlockMap().map(function(p) { | |
var q = p.getText(), | |
r = ''; | |
p.findEntityRanges(j.thatReturnsTrue, function(s, t) { | |
var u = p.getEntityAt(s); | |
if (u === null) { | |
r += q.slice(s, t); | |
} else { | |
var v = i.get(u); | |
if (v.getType() === k) { | |
r += v.getData().originalEmoticon; | |
} else r += q.slice(s, t); | |
} | |
}); | |
return r; | |
}); | |
return o.join(l); | |
} | |
e.exports = m; | |
}, null); | |
__d("DocumentMentionsRegex", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var g = '\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\\/!%\'"~=<>_:;', | |
h = '\\b[A-Z][^\\s' + g + ']', | |
i = { | |
PUNCTUATION: g, | |
NAME: h | |
}; | |
e.exports = i; | |
}, null); | |
__d("AtSignMentionsStrategy", ["DocumentMentionsRegex"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g.PUNCTUATION, | |
i = ['@', '\\uff20'].join(''), | |
j = '[^' + i + h + '\\s]', | |
k = '(?:' + '\\.[ |$]|' + ' |' + '[' + h + ']|' + ')', | |
l = new RegExp('(?:^|\\s)(' + '[' + i + ']' + '((?:' + j + k + '){0,20})' + ')$'), | |
m = { | |
name: 'AtSignMentionsStrategy', | |
findMentionableString: function(n) { | |
var o = l.exec(n); | |
if (o !== null) { | |
var p = o[2]; | |
if (p.length) return { | |
matchingString: p, | |
leadOffset: o[1].length | |
}; | |
} | |
return null; | |
} | |
}; | |
e.exports = m; | |
}, null); | |
__d("CapitalizedNameMentionsStrategy", ["DocumentMentionsRegex"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = 1, | |
i = new RegExp('(^|[^#])((?:' + g.NAME + '{' + h + ',})$)'), | |
j = { | |
name: 'CapitalizedNameMentionsStrategy', | |
findMentionableString: function(k) { | |
var l = i.exec(k); | |
if (l !== null) return { | |
matchingString: l[2], | |
leadOffset: l[2].length | |
}; | |
return null; | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("DocumentCompositeMentionsSource", ["emptyFunction", "invariant", "nullthrows"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function j(l, m) { | |
var n = l.getCharacterList().toSeq().slice(0, m).reverse().takeWhile(function(o) { | |
return o.getEntity() === null; | |
}).count(); | |
return l.getText().slice(m - n, m); | |
} | |
function k(l) { | |
h(l.length > 0); | |
this.$DocumentCompositeMentionsSource0 = l; | |
this.$DocumentCompositeMentionsSource1 = false; | |
this.$DocumentCompositeMentionsSource2 = null; | |
} | |
k.prototype.bootstrap = function(l) { | |
if (this.$DocumentCompositeMentionsSource1) return; | |
this.$DocumentCompositeMentionsSource1 = true; | |
l = l || g; | |
var m = this.$DocumentCompositeMentionsSource0.length; | |
function n() { | |
m--; | |
if (!m) l && l(); | |
} | |
this.$DocumentCompositeMentionsSource0.forEach(function(o) { | |
o.bootstrap(n); | |
}); | |
}; | |
k.prototype.search = function(l, m, n) { | |
var o = m.getAnchorKey(), | |
p = l.getBlockForKey(o); | |
this.$DocumentCompositeMentionsSource3(j(p, m.getAnchorOffset()), n); | |
}; | |
k.prototype.$DocumentCompositeMentionsSource3 = function(l, m) { | |
var n = this.$DocumentCompositeMentionsSource0.length, | |
o, p; | |
for (var q = 0; q < n; q++) { | |
o = this.$DocumentCompositeMentionsSource0[q]; | |
p = o.findMatch(l); | |
if (p === null) { | |
continue; | |
} else { | |
var r = i(p).matchingString; | |
this.$DocumentCompositeMentionsSource2 = r; | |
o.search(r, function(s, t) { | |
if (this.$DocumentCompositeMentionsSource2 === t) m(s, p.leadOffset); | |
}.bind(this)); | |
return; | |
} | |
} | |
this.$DocumentCompositeMentionsSource2 = null; | |
m(null, null); | |
}; | |
e.exports = k; | |
}, null); | |
__d("DocumentMentionsSource", ["invariant"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i, j) { | |
g(typeof i.findMentionableString === 'function'); | |
this.$DocumentMentionsSource0 = i; | |
this.$DocumentMentionsSource1 = j; | |
this.$DocumentMentionsSource2 = false; | |
} | |
h.prototype.findMatch = function(i) { | |
return this.$DocumentMentionsSource0.findMentionableString(i); | |
}; | |
h.prototype.bootstrap = function(i) { | |
if (!this.$DocumentMentionsSource2) { | |
this.$DocumentMentionsSource2 = true; | |
this.$DocumentMentionsSource1.bootstrap(i); | |
} | |
}; | |
h.prototype.search = function(i, j) { | |
this.$DocumentMentionsSource1.search(i, j, { | |
strategyName: this.$DocumentMentionsSource0.name | |
}); | |
}; | |
e.exports = h; | |
}, null); | |
__d("getMentionsTextForContentState", ["ComposedEntityType", "DocumentCharacters", "DocumentEntity", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = g, | |
l = k.EMOTICON, | |
m = k.MENTION, | |
n = h, | |
o = n.SOFT_NEWLINE, | |
p = j.thatReturnsTrue, | |
q = /[\\\]:]/g; | |
function r(t) { | |
var u = t.getBlockMap().map(function(v) { | |
var w = v.getText(), | |
x = []; | |
v.findEntityRanges(p, function(y, z) { | |
x.push(s(w.slice(y, z), v.getEntityAt(y))); | |
}); | |
return x.join(''); | |
}); | |
return u.join(o); | |
} | |
function s(t, u) { | |
if (u) { | |
var v = i.get(u); | |
if (v.getType() === m) { | |
t = t.replace(q, function(w) { | |
return '\\' + w; | |
}); | |
return '@[' + v.getData().id + ':' + t + ']'; | |
} else if (v.getType() === l) return v.getData().originalEmoticon; | |
} | |
return t.replace('@[', '@ ['); | |
} | |
e.exports = r; | |
}, null); | |
__d("FilteredSearchSource", ["AbstractSearchSource"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
for (var h in g) | |
if (g.hasOwnProperty(h)) j[h] = g[h]; | |
var i = g === null ? null : g.prototype; | |
j.prototype = Object.create(i); | |
j.prototype.constructor = j; | |
j.__superConstructor__ = g; | |
function j(k, l) { | |
"use strict"; | |
g.call(this); | |
this.$FilteredSearchSource0 = k; | |
this.$FilteredSearchSource1 = l; | |
} | |
j.prototype.bootstrapImpl = function(k) { | |
"use strict"; | |
this.$FilteredSearchSource1.bootstrap(k); | |
}; | |
j.prototype.searchImpl = function(k, l, m) { | |
"use strict"; | |
var n = function(o, p) { | |
o = this.$FilteredSearchSource2(o, p); | |
l(o, p); | |
}.bind(this); | |
this.$FilteredSearchSource1.search(k, n, m); | |
}; | |
j.prototype.$FilteredSearchSource2 = function(k, l) { | |
"use strict"; | |
var m = this.$FilteredSearchSource0; | |
return k.filter(function(n) { | |
return m(n, l); | |
}); | |
}; | |
e.exports = j; | |
}, null); | |
__d("filterCapitalizedNames", ["TokenizeUtil"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(l, m) { | |
return i(l) && (m.length >= 5 || j(l, m)); | |
} | |
function i(l) { | |
var m = l.getAuxiliaryData() || k; | |
return !m.disableAutosuggest && !!(l.getType() === 'user' || m.connectedPage); | |
} | |
function j(l, m) { | |
return g.isExactMatch(m, l.getTitle()); | |
} | |
var k = {}; | |
e.exports = h; | |
}, null); | |
__d("XPluginCommentsBanAuthorAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/moderate\/ban\/{comment_id}\/", { | |
comment_id: { | |
type: "String", | |
required: true | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsCreateCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/createComment\/{target_id}\/", { | |
target_id: { | |
type: "Int", | |
required: true | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsCreateReplyAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/createReply\/{parent_comment_id}\/", { | |
parent_comment_id: { | |
type: "String", | |
required: true | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsDeleteCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/delete\/", {}); | |
}, null); | |
__d("XPluginCommentsEditCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/edit\/", {}); | |
}, null); | |
__d("XPluginCommentsFlagCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/flag\/", {}); | |
}, null); | |
__d("XPluginCommentsLikeCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/like\/", { | |
action_like: { | |
type: "Bool", | |
defaultValue: false | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsHideCommentAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/moderate\/hide\/{url_id}\/", { | |
url_id: { | |
type: "Int", | |
required: true | |
}, | |
action: { | |
type: "Enum", | |
required: true, | |
enumType: 1 | |
}, | |
type: { | |
type: "Enum", | |
required: true, | |
enumType: 1 | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsPagerAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/{target_id}\/pager\/{ordering}\/", { | |
target_id: { | |
type: "Int", | |
required: true | |
}, | |
ordering: { | |
type: "Enum", | |
required: true, | |
enumType: 1 | |
} | |
}); | |
}, null); | |
__d("XPluginCommentsRepliesPagerAsyncController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/async\/comment\/{comment_id}\/pager\/", { | |
comment_id: { | |
type: "String", | |
required: true | |
} | |
}); | |
}, null); | |
__d("CommentsPluginStore", ["AsyncRequest", "XPluginCommentsBanAuthorAsyncController", "XPluginCommentsCreateCommentAsyncController", "XPluginCommentsCreateReplyAsyncController", "XPluginCommentsDeleteCommentAsyncController", "DeveloperCommentsModerationAction", "DeveloperCommentsModerationSource", "DeveloperCommentsModerationType", "DevxFluxDispatcher", "DTSG", "XPluginCommentsEditCommentAsyncController", "XPluginCommentsFlagCommentAsyncController", "XPluginCommentsLikeCommentAsyncController", "XPluginCommentsHideCommentAsyncController", "MultiLoginPopup", "XPluginCommentsPagerAsyncController", "XPluginCommentsRepliesPagerAsyncController", "UnverifiedXD", "fbt", "getMentionsTextForContentState", "getVisibleValueForContentState", "invariant", "mixInEventEmitter", "nullthrows", "uniqueID"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da, ea) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var fa = 10, | |
ga = '__DEVX__', | |
ha = { | |
visibleValue: '', | |
encodedValue: '' | |
}, | |
ia = { | |
change: true, | |
composerChange: true, | |
composerCommentAdded: true, | |
login: true, | |
moreCommentsCompleted: true, | |
moreRepliesCompleted: true, | |
postError: true, | |
sortingCompleted: true, | |
sentryAction: true | |
}, | |
ja = { | |
maxLines: 10, | |
maxLength: 1000 | |
}, | |
ka = [], | |
la = {}, | |
ma = { | |
userID: null, | |
actors: {}, | |
appID: null, | |
afterCursor: null, | |
beforeCursor: null, | |
channelURL: null, | |
composerSearchSource: {}, | |
deeplinkedCommentID: null, | |
href: '', | |
iframeReferer: null, | |
isMobile: false, | |
isModerator: false, | |
mirroredPage: null, | |
moderateURL: null, | |
targetFBID: null, | |
totalCount: 0, | |
user: {} | |
}, | |
na = false, | |
oa = { | |
ordering: null | |
}, | |
pa = {}, | |
qa = {}, | |
ra = { | |
setPostToFeed: true, | |
sort: true, | |
showMoreComments: true, | |
showMoreReplies: true, | |
toggleVisibility: true | |
}, | |
sa = { | |
addComment: true | |
}; | |
function ta(bb) { | |
ba(ab.hasOwnProperty(bb)); | |
} | |
function ua() { | |
ba(Array.isArray(ka)); | |
ba(la instanceof Object); | |
} | |
function va(bb, cb) { | |
if (!ra[bb] && !za.isLoggedIn()) { | |
var db = sa[bb] ? null : cb; | |
u.login(null, null, y._("\u8acb\u767b\u5165\u4ee5\u4fbf\u56de\u61c9"), {}, wa.bind(null, db)); | |
return; | |
} | |
cb.call(); | |
} | |
function wa(bb, cb) { | |
ma.user.id = cb.user; | |
ma.user.uri = cb.profileUrl; | |
ma.user.thumbSrc = cb.profilePic; | |
ma.user.actorIDs = cb.actorIDs; | |
if (cb.fbDtsg) p.setToken(cb.fbDtsg); | |
bb && bb.call(); | |
za.emit('change'); | |
za.emit('login'); | |
} | |
function xa(bb, cb, db) { | |
return db.indexOf(bb) === cb; | |
} | |
function ya(bb, cb) { | |
if (!ma.channelURL) return; | |
Object.assign(cb, { | |
type: bb, | |
href: ma.href | |
}); | |
x.send(cb, ma.channelURL); | |
} | |
var za = { | |
LOGGED_OUT_USER: "0", | |
getCommentIDs: function() { | |
return ka; | |
}, | |
getByID: function(bb) { | |
ua(); | |
return da(la)[bb]; | |
}, | |
isOptimisticComment: function(bb) { | |
return bb.id.startsWith(ga); | |
}, | |
getCurrentSorting: function() { | |
return da(oa.ordering); | |
}, | |
getTargetFBID: function() { | |
return da(ma.targetFBID); | |
}, | |
getCommentsCount: function() { | |
ua(); | |
return ma.totalCount; | |
}, | |
getUser: function() { | |
return ma.user; | |
}, | |
getIframeReferer: function() { | |
return ma.iframeReferer; | |
}, | |
getAuthor: function(bb) { | |
return this.getByID(this.getByID(bb).authorID); | |
}, | |
getPageSize: function() { | |
return fa; | |
}, | |
getCommentBodyTruncationLimits: function() { | |
return ja; | |
}, | |
getComposerSearchSource: function() { | |
return ma.composerSearchSource; | |
}, | |
getMirroredPage: function() { | |
return ma.mirroredPage; | |
}, | |
isMirrored: function() { | |
return this.getMirroredPage() != null; | |
}, | |
isReply: function(bb) { | |
var cb = this.getByID(bb); | |
return cb.targetID !== this.getTargetFBID(); | |
}, | |
setActor: function(bb) { | |
ma.user = ma.actors[bb]; | |
}, | |
getPostToFeed: function() { | |
return na; | |
}, | |
setPostToFeed: function(bb) { | |
na = bb; | |
}, | |
setCreateComposerState: function(bb, cb) { | |
pa[cb || ga] = bb; | |
this.emit('composerChange'); | |
}, | |
getCreateComposerState: function(bb) { | |
return pa[bb || ga]; | |
}, | |
getCreateComposerContent: function(bb) { | |
return this._editorStateToComposerPayload(this.getCreateComposerState(bb)); | |
}, | |
isEmptyCreateComposer: function(bb) { | |
return this.getCreateComposerContent(bb).visibleValue.trim() === ''; | |
}, | |
setEditComposerState: function(bb, cb) { | |
qa[cb] = bb; | |
this.emit('composerChange'); | |
}, | |
getEditComposerState: function(bb) { | |
return qa[bb]; | |
}, | |
getEditComposerContent: function(bb) { | |
return this._editorStateToComposerPayload(this.getEditComposerState(bb)); | |
}, | |
isEmptyEditComposer: function(bb) { | |
return this.getEditComposerContent(bb).visibleValue.trim() === ''; | |
}, | |
_editorStateToComposerPayload: function(bb) { | |
if (!bb) return ha; | |
var cb = bb.getCurrentContent(), | |
db = aa(cb), | |
eb = z(cb); | |
return { | |
visibleValue: db, | |
encodedValue: eb | |
}; | |
}, | |
getActorIDs: function() { | |
return Object.keys(ma.actors); | |
}, | |
getModerateURL: function() { | |
return ma.moderateURL; | |
}, | |
isLoggedIn: function() { | |
return ma.user.id !== za.LOGGED_OUT_USER; | |
}, | |
isMobile: function() { | |
return ma.isMobile; | |
}, | |
isViewerModerator: function() { | |
return ma.isModerator; | |
}, | |
hasUnloadedComments: function() { | |
return !!ma.afterCursor; | |
}, | |
hasUnloadedReplies: function(bb) { | |
var cb = this.getByID(bb).public_replies; | |
if (!cb) return false; | |
if (cb.afterCursor) return true; | |
if ((!cb.commentIDs || cb.commentIDs.length === 0) && cb.totalCount > 0) return true; | |
return false; | |
}, | |
getUnloadedCommentsCount: function() { | |
return ma.totalCount - ka.length; | |
}, | |
dispatcherIndex: o.register(function(bb) { | |
var cb; | |
ta(bb.action); | |
va(bb.action, (cb = ab[bb.action]).bind.apply(cb, [ab].concat(bb.args))); | |
}), | |
init: function(bb, cb, db) { | |
ma = cb; | |
this.updateCommentData(bb, db); | |
Object.keys(ma.actors).forEach(function(eb) { | |
return la[eb] = ma.actors[eb]; | |
}); | |
this.setActor(ma.userID); | |
}, | |
updateCommentData: function(bb, cb) { | |
ka = bb.commentIDs; | |
la = this.initComments(ka, bb.idMap); | |
oa.ordering = cb; | |
}, | |
initComment: function(bb) { | |
bb.collapsed = false; | |
bb.editor = false; | |
bb.composer = false; | |
bb.deleted = false; | |
bb.flagged = false; | |
return bb; | |
}, | |
initComments: function(bb, cb) { | |
bb.forEach(function(db) { | |
return cb[db] = this.initComment(cb[db]); | |
}.bind(this)); | |
return cb; | |
}, | |
emit: ((void 0)), | |
addListener: ((void 0)), | |
removeCurrentListener: ((void 0)), | |
ActionHandler: ((void 0)) | |
}; | |
ca(za, ia); | |
var ab = { | |
ban: function(bb) { | |
var cb = za.getByID(bb); | |
cb.deleted = true; | |
za.emit('change'); | |
var db = h.getURIBuilder().setString('comment_id', bb).getURI(); | |
new g(db).setMethod('POST').setData({ | |
ban: true, | |
source: m.URL | |
}).send(); | |
}, | |
hide: function(bb) { | |
var cb = za.getByID(bb); | |
cb.deleted = true; | |
za.emit('change'); | |
var db = t.getURIBuilder().setInt('url_id', ma.targetFBID).setEnum('action', l.DELETE).setEnum('type', n.APPROVED).getURI(); | |
new g(db).setData({ | |
comment_ids: [bb] | |
}).setMethod('POST').send(); | |
}, | |
addComment: function() { | |
var bb = za.getCreateComposerContent(), | |
cb = i.getURIBuilder().setInt('target_id', ma.targetFBID).getURI(); | |
new g(cb).setData({ | |
app_id: ma.appID, | |
av: za.getUser().id, | |
text: bb.encodedValue, | |
post_to_feed: za.getPostToFeed(), | |
iframe_referer: ma.iframeReferer | |
}).setMethod('POST').setHandler(function(db) { | |
var eb = db.payload, | |
fb = eb.commentID; | |
this._prependComment(eb.idMap[fb]); | |
delete pa[ga]; | |
za.emit('composerCommentAdded', {}); | |
ya('commentCreated', { | |
commentID: fb, | |
message: bb.visibleValue | |
}); | |
if (eb.sentryAction) za.emit('sentryAction', eb.sentryAction, fb); | |
}.bind(this)).setErrorHandler(function(db) { | |
delete la[ga]; | |
ka.shift(); | |
za.emit('change'); | |
za.emit('postError', db); | |
}).send(); | |
this._prependComment({ | |
authorID: ma.user.id, | |
targetID: ma.targetFBID, | |
body: { | |
text: bb.visibleValue | |
} | |
}); | |
}, | |
addReply: function(bb) { | |
var cb = za.getCreateComposerContent(bb), | |
db = j.getURIBuilder().setString('parent_comment_id', bb).getURI(), | |
eb = ga + ea(); | |
new g(db).setData({ | |
app_id: ma.appID, | |
av: za.getUser().id, | |
text: cb.encodedValue, | |
iframe_referer: ma.iframeReferer, | |
replied_to: za.getByID(bb).replyToCommentID | |
}).setMethod('POST').setHandler(function(hb) { | |
var ib = za.getByID(bb), | |
jb = Object.assign({}, ib.public_replies); | |
Object.assign(la, hb.payload.idMap); | |
ib = za.getByID(bb); | |
ib.public_replies = jb; | |
delete la[eb]; | |
delete pa[bb]; | |
ka.splice(ka.indexOf(eb), 1); | |
ib.composer = false; | |
delete ib.replyToCommentID; | |
ib.public_replies.commentIDs.pop(); | |
ib.public_replies.commentIDs.push(hb.payload.commentID); | |
ya('commentCreated', { | |
commentID: hb.payload.commentID, | |
parentCommentID: bb, | |
message: cb.visibleValue | |
}); | |
za.emit('change'); | |
}).setErrorHandler(function(hb) { | |
delete la[eb]; | |
ka.splice(ka.indexOf(eb), 1); | |
fb = za.getByID(bb); | |
fb.public_replies.commentIDs.pop(); | |
fb.public_replies.totalCount--; | |
fb.composer = false; | |
delete fb.replyToCommentID; | |
za.emit('change'); | |
za.emit('postError', hb); | |
}).send(); | |
var fb = za.getByID(bb), | |
gb = Object.assign({}, fb.public_replies); | |
if (!gb.commentIDs) gb.commentIDs = []; | |
if (!gb.totalCount) gb.totalCount = 0; | |
gb.totalCount++; | |
gb.commentIDs.push(eb); | |
fb.public_replies = gb; | |
la[eb] = { | |
authorID: ma.user.id, | |
body: { | |
text: cb.visibleValue | |
}, | |
targetID: bb, | |
id: eb | |
}; | |
ka.push(eb); | |
za.emit('change'); | |
}, | |
_prependComment: function(bb) { | |
if (!bb.id) { | |
bb.id = ga; | |
} else { | |
ka.shift(); | |
delete la[ga]; | |
} | |
ka.unshift(bb.id); | |
la[bb.id] = za.initComment(bb); | |
za.emit('change'); | |
}, | |
edit: function(bb) { | |
za.getByID(bb).editor = true; | |
za.emit('change'); | |
}, | |
saveEdit: function(bb) { | |
var cb = JSON.parse(JSON.stringify(za.getByID(bb))), | |
db = q.getURIBuilder().getURI(), | |
eb = za.getEditComposerContent(bb); | |
new g(db).setMethod('POST').setData({ | |
app_id: ma.appID, | |
text: eb.encodedValue, | |
comment_id: bb, | |
av: za.getAuthor(bb).id, | |
iframe_referer: ma.iframeReferer | |
}).setHandler(function(gb) { | |
var hb = gb.payload; | |
la[hb.commentID] = za.initComment(hb.idMap[hb.commentID]); | |
delete qa[bb]; | |
za.emit('change'); | |
}).setErrorHandler(function(gb) { | |
cb.editor = false; | |
Object.assign(za.getByID(bb), cb); | |
za.emit('change'); | |
za.emit('postError', gb); | |
}).send(); | |
var fb = za.getByID(bb); | |
fb.editor = false; | |
fb.body.text = eb.visibleValue; | |
delete fb.ranges; | |
za.emit('change'); | |
}, | |
cancelEdit: function(bb) { | |
var cb = za.getByID(bb); | |
cb.editor = false; | |
za.emit('change'); | |
}, | |
"delete": function(bb) { | |
var cb = za.getByID(bb); | |
cb.deleted = true; | |
var db = k.getURIBuilder().getURI(); | |
new g(db).setData({ | |
app_id: ma.appID, | |
comment_id: bb, | |
av: za.getAuthor(bb).id, | |
iframe_referer: ma.iframeReferer | |
}).setMethod('POST').setHandler(function() { | |
return ya('commentRemoved', { | |
commentID: bb | |
}); | |
}).setErrorHandler(function(eb) { | |
var fb = za.getByID(bb); | |
fb.deleted = false; | |
za.emit('change'); | |
}).send(); | |
za.emit('change'); | |
}, | |
like: function(bb) { | |
var cb = za.getByID(bb), | |
db = s.getURIBuilder().setBool('action_like', !cb.hasLiked).getURI(); | |
new g(db).setData({ | |
app_id: ma.appID, | |
comment_id: cb.id, | |
iframe_referer: ma.iframeReferer | |
}).setMethod('POST').setHandler(function(eb) { | |
var fb = eb.payload; | |
Object.assign(la[fb.commentID], za.initComment(fb.idMap[fb.commentID])); | |
za.emit('change'); | |
}).setErrorHandler(function(eb) { | |
cb.likeCount--; | |
cb.hasLiked = false; | |
za.emit('postError', eb); | |
}).send(); | |
cb.hasLiked = !cb.hasLiked; | |
if (cb.hasLiked) { | |
cb.likeCount++; | |
} else if (cb.likeCount > 0) cb.likeCount--; | |
la[cb.id] = cb; | |
za.emit('change'); | |
}, | |
sort: function(bb) { | |
var cb = v.getURIBuilder().setInt('target_id', ma.targetFBID).setEnum('ordering', bb).getURI(); | |
new g(cb).setMethod('POST').setData({ | |
app_id: ma.appID, | |
limit: za.getPageSize(), | |
iframe_referer: ma.iframeReferer | |
}).setHandler(function(db) { | |
var eb = db.payload; | |
ma.afterCursor = eb.afterCursor; | |
za.updateCommentData(eb, bb); | |
za.emit('sortingCompleted'); | |
za.emit('change'); | |
}).send(); | |
}, | |
showMoreComments: function() { | |
var bb = v.getURIBuilder().setInt('target_id', ma.targetFBID).setEnum('ordering', za.getCurrentSorting()).getURI(); | |
new g(bb).setMethod('POST').setData({ | |
app_id: ma.appID, | |
after_cursor: ma.afterCursor, | |
limit: za.getPageSize(), | |
deeplinked_comment_id: ma.deeplinkedCommentID, | |
iframe_referer: ma.iframeReferer | |
}).setHandler(function(cb) { | |
var db = cb.payload; | |
ma.afterCursor = db.afterCursor; | |
ka = ka.concat(db.commentIDs).filter(xa); | |
la = Object.assign(la, za.initComments(db.commentIDs, db.idMap)); | |
za.emit('moreCommentsCompleted'); | |
za.emit('change'); | |
}).setErrorHandler(function(cb) { | |
za.emit('postError', cb); | |
za.emit('moreCommentsCompleted'); | |
}).send(); | |
}, | |
setUser: function(bb) { | |
za.setActor(bb); | |
za.emit('composerChange'); | |
}, | |
setPostToFeed: function(bb) { | |
za.setPostToFeed(bb); | |
}, | |
showMoreReplies: function(bb) { | |
var cb = w.getURIBuilder().setString('comment_id', bb).getURI(), | |
db = za.getByID(bb).public_replies; | |
new g(cb).setMethod('POST').setData({ | |
app_id: ma.appID, | |
after_cursor: db.afterCursor, | |
limit: za.getPageSize(), | |
iframe_referer: ma.iframeReferer | |
}).setHandler(function(eb) { | |
var fb = eb.payload; | |
la = Object.assign(za.initComments(fb.commentIDs, fb.idMap), la); | |
db.afterCursor = fb.afterCursor; | |
db.commentIDs = db.commentIDs.concat(fb.commentIDs).filter(xa); | |
za.emit('moreRepliesCompleted', { | |
commentID: bb | |
}); | |
za.emit('change'); | |
}).setErrorHandler(function(eb) { | |
za.emit('postError', eb); | |
za.emit('moreRepliesCompleted', { | |
commentID: bb | |
}); | |
}).send(); | |
}, | |
toggleVisibility: function(bb) { | |
var cb = za.getByID(bb); | |
cb.collapsed = !cb.collapsed; | |
za.emit('change'); | |
}, | |
flag: function(bb) { | |
la[bb].flagged = true; | |
this._sendFlagOrUnflagRequest(bb, 'flag'); | |
za.emit('change'); | |
}, | |
unflag: function(bb) { | |
la[bb].flagged = false; | |
this._sendFlagOrUnflagRequest(bb, 'unflag'); | |
za.emit('change'); | |
}, | |
_sendFlagOrUnflagRequest: function(bb, cb) { | |
var db = r.getURIBuilder().getURI(); | |
new g(db).setData({ | |
app_id: ma.appID, | |
comment_id: bb, | |
iframe_referer: ma.iframeReferer, | |
unflag: cb === 'unflag' | |
}).setMethod('POST').setErrorHandler(function(eb) { | |
la[bb].flagged = !la[bb].flagged; | |
za.emit('postError', eb); | |
}).send(); | |
}, | |
report: function(bb) { | |
window.open(za.getByID(bb).reportURI, '_blank'); | |
}, | |
showReplyComposer: function(bb) { | |
var cb = za.getByID(bb); | |
if (za.isReply(bb)) { | |
var db = bb; | |
cb = za.getByID(cb.targetID); | |
cb.replyToCommentID = db; | |
} | |
cb.composer = true; | |
za.emit('change'); | |
}, | |
cancelReply: function(bb) { | |
var cb = za.getByID(bb); | |
cb.composer = false; | |
delete cb.replyToCommentID; | |
za.emit('change'); | |
} | |
}; | |
za.ActionHandler = ab; | |
e.exports = za; | |
}, null); | |
__d("CommentsPluginHeader.react", ["CommentsPluginActions", "CommentsPluginStore", "DeveloperCommentsPluginOrdering", "LeftRight.react", "Link.react", "React", "XUISelector.react", "XUISpinner.react", "XUIText.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var r = m.Option, | |
s = l.Component; | |
for (var t in s) | |
if (s.hasOwnProperty(t)) v[t] = s[t]; | |
var u = s === null ? null : s.prototype; | |
v.prototype = Object.create(u); | |
v.prototype.constructor = v; | |
v.__superConstructor__ = s; | |
function v(w) { | |
s.call(this, w); | |
this.state = { | |
sorting: false | |
}; | |
var x = this; | |
x.$CommentsPluginHeader0 = this.$CommentsPluginHeader0.bind(this); | |
} | |
v.prototype.$CommentsPluginHeader0 = function(event) { | |
this.setState({ | |
sorting: true | |
}); | |
h.addListener('sortingCompleted', function() { | |
this.setState({ | |
sorting: false | |
}); | |
h.removeCurrentListener(); | |
}.bind(this)); | |
g.sort(event.value); | |
}; | |
v.prototype.render = function() { | |
var w = null; | |
if (h.getModerateURL()) w = l.createElement("span", null, l.createElement("span", { | |
className: "_52bm" | |
}, "|"), l.createElement(k, { | |
href: h.getModerateURL(), | |
target: "_blank" | |
}, q._("\u5be9\u6838\u5de5\u5177"))); | |
return (l.createElement(j, { | |
className: "_491z" | |
}, l.createElement("span", null, l.createElement(o, { | |
weight: "bold" | |
}, h.getCommentsCount() !== 1 ? q._("{count}\u5247\u56de\u61c9", [q.param("count", h.getCommentsCount())]) : q._("1 \u5247\u56de\u61c9")), w), l.createElement("div", null, this.state.sorting ? l.createElement(n, { | |
size: "small", | |
className: "_3-90" | |
}) : null, l.createElement("span", { | |
className: "_pup" | |
}, q._("\u6392\u5e8f\u4f9d\u64da")), ' ', l.createElement(m, { | |
alignh: "right", | |
className: "_3-8_", | |
initialValue: h.getCurrentSorting(), | |
onChange: this.$CommentsPluginHeader0 | |
}, i.__types.map(function(x) { | |
return l.createElement(r, { | |
value: x, | |
key: x | |
}, i.__labels[x]); | |
}))))); | |
}; | |
e.exports = v; | |
}, null); | |
__d("CommentsPluginAction", ["fbt"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = { | |
EDIT: 'edit', | |
DELETE: 'delete', | |
FLAG: 'flag', | |
UNFLAG: 'unflag', | |
BAN: 'ban', | |
HIDE: 'hide', | |
REPORT: 'report', | |
COLLAPSE: 'collapse', | |
SHOW: 'show', | |
getLabel: function(i) { | |
switch (i) { | |
case h.COLLAPSE: | |
return g._("\u6536\u5408\u56de\u61c9"); | |
case h.SHOW: | |
return g._("\u986f\u793a\u56de\u61c9"); | |
case h.EDIT: | |
return g._("\u7de8\u8f2f\u56de\u61c9"); | |
case h.DELETE: | |
return g._("\u522a\u9664\u7559\u8a00"); | |
case h.FLAG: | |
return g._("\u6aa2\u8209\u56de\u61c9"); | |
case h.UNFLAG: | |
return g._("\u53d6\u6d88\u6a19\u793a\u7559\u8a00"); | |
case h.BAN: | |
return g._("\u5c01\u9396\u7528\u6236"); | |
case h.HIDE: | |
return g._("\u96b1\u85cf\u56de\u61c9"); | |
case h.REPORT: | |
return g._("\u5411 Facebook \u63d0\u51fa\u6aa2\u8209"); | |
} | |
}, | |
getMenuActions: function() { | |
return [h.COLLAPSE, h.SHOW, h.EDIT, h.DELETE, h.FLAG, h.UNFLAG, h.BAN, h.HIDE, h.REPORT]; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("MixinCommentsPluginConfirmAction", ["CommentsPluginAction", "CommentsPluginActions", "React", "Set", "XUIDialog.react", "XUIDialogBody.react", "XUIDialogButton.react", "XUIDialogCancelButton.react", "XUIDialogFooter.react", "XUIDialogTitle.react", "fbt", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var s = { | |
requiresConfirmation: function(t) { | |
var u = new j([g.DELETE, g.BAN, g.HIDE]); | |
return u.has(t); | |
}, | |
confirmAction: function(t) { | |
this.setState({ | |
actionConfirmationShown: true, | |
action: t | |
}); | |
}, | |
_onActionConfirmed: function() { | |
h[this.state.action](this.props.commentID); | |
this.setState({ | |
actionConfirmationShown: false | |
}); | |
}, | |
_onActionCancelled: function() { | |
this.setState({ | |
actionConfirmationShown: false | |
}); | |
}, | |
_getActionMetadata: function(t) { | |
switch (t) { | |
case g.DELETE: | |
return { | |
body: q._("\u4f60\u78ba\u5b9a\u8981\u522a\u9664\u6b64\u56de\u61c9\u55ce\uff1f"), | |
button_label: q._("\u78ba\u8a8d\u522a\u9664") | |
}; | |
case g.BAN: | |
return { | |
body: q._("\u78ba\u5b9a\u8981\u5c01\u9396\u9019\u540d\u7528\u6236\uff1f"), | |
button_label: q._("\u78ba\u8a8d\u5c01\u9396") | |
}; | |
case g.HIDE: | |
return { | |
body: q._("\u4f60\u78ba\u5b9a\u8981\u96b1\u85cf\u6b64\u56de\u61c9\uff1f"), | |
button_label: q._("\u78ba\u8a8d\u96b1\u85cf") | |
}; | |
default: | |
r(false); | |
} | |
}, | |
renderActionConfirmationDialog: function(t) { | |
var u = this.state.action; | |
if (!u) return null; | |
var v = this._getActionMetadata(u); | |
return (i.createElement(k, { | |
shown: this.state.actionConfirmationShown, | |
width: t | |
}, i.createElement(p, { | |
showCloseButton: false | |
}, g.getLabel(u)), i.createElement(l, null, v.body), i.createElement(o, null, i.createElement(n, { | |
onClick: this._onActionCancelled | |
}), i.createElement(m, { | |
use: "confirm", | |
label: v.button_label, | |
onClick: this._onActionConfirmed | |
})))); | |
} | |
}; | |
e.exports = s; | |
}, null); | |
__d("CommentsPluginCommentActions.react", ["ActionList.react", "CommentsPluginAction", "CommentsPluginActions", "CommentsPluginStore", "Image.react", "Link.react", "MixinCommentsPluginConfirmAction", "React", "UFICommentMetadata.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var r = n, | |
s = r.PropTypes, | |
t = n.createClass({ | |
displayName: "CommentsPluginCommentActions", | |
mixins: [m], | |
propTypes: { | |
commentID: s.string.isRequired | |
}, | |
getInitialState: function() { | |
return { | |
deleteConfirmationShown: false, | |
action: null | |
}; | |
}, | |
_onLikeAction: function() { | |
i.like(this.props.commentID); | |
}, | |
_onReply: function() { | |
i.showReplyComposer(this.props.commentID); | |
}, | |
_onFlag: function() { | |
i.flag(this.props.commentID); | |
}, | |
_getLikeActionElem: function(u) { | |
if (!u.canLike && j.isLoggedIn()) return null; | |
return (n.createElement(l, { | |
onClick: this._onLikeAction | |
}, u.hasLiked ? q._("\u6536\u56de\u8b9a") : q._("\u8b9a"))); | |
}, | |
render: function() { | |
var u = j.getByID(this.props.commentID); | |
return (n.createElement(g, { | |
className: "_2vq9" | |
}, this._getLikeActionElem(u), n.createElement(l, { | |
onClick: this._onReply | |
}, q._("\u56de\u8986")), j.isMobile() ? u.canEdit ? n.createElement(l, { | |
onClick: this.confirmAction.bind(this, h.DELETE) | |
}, q._("\u522a\u9664")) : n.createElement(l, { | |
onClick: this._onFlag | |
}, q._("\u6aa2\u8209")) : null, u.likeCount ? n.createElement("span", null, n.createElement(k, { | |
src: "/images/ufi/fbfeed/like.png", | |
className: "_3-8_ _4iy4" | |
}), u.likeCount) : null, n.createElement(o, { | |
comment: u, | |
permalink: u.permalink, | |
shortenTimestamp: true, | |
showPermalink: !j.isReply(this.props.commentID), | |
permalinkTarget: "_parent" | |
}), j.isMobile() ? this.renderActionConfirmationDialog(320) : null)); | |
} | |
}); | |
e.exports = t; | |
}, null); | |
__d("CommentsPluginComposerMirroringNotice.react", ["CommentsPluginStore", "React", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var k = h, | |
l = k.PropTypes, | |
m = h.Component; | |
for (var n in m) | |
if (m.hasOwnProperty(n)) p[n] = m[n]; | |
var o = m === null ? null : m.prototype; | |
p.prototype = Object.create(o); | |
p.prototype.constructor = p; | |
p.__superConstructor__ = m; | |
function p() { | |
if (m !== null) m.apply(this, arguments); | |
} | |
p.prototype.render = function() { | |
var q = g.getMirroredPage(); | |
if (!q) return null; | |
return (h.createElement("div", { | |
className: "_5sge _2ph-" | |
}, q.name ? this.props.isReply ? j._("Your reply may also appear on {page name}'s Facebook Page.", [j.param("page name", h.createElement("a", { | |
href: q.uri, | |
target: "blank" | |
}, q.name))]) : j._("Your comment may also appear on {page name}'s Facebook Page.", [j.param("page name", h.createElement("a", { | |
href: q.uri, | |
target: "blank" | |
}, q.name))]) : this.props.isReply ? j._("Your reply may also appear on Facebook.") : j._("Your comment may also appear on Facebook."))); | |
}; | |
p.propTypes = { | |
isReply: l.bool | |
}; | |
e.exports = p; | |
}, null); | |
__d("CommentsPluginProfilePicture.react", ["React", "cx"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var i = g, | |
j = i.PropTypes, | |
k = g.Component; | |
for (var l in k) | |
if (k.hasOwnProperty(l)) n[l] = k[l]; | |
var m = k === null ? null : k.prototype; | |
n.prototype = Object.create(m); | |
n.prototype.constructor = n; | |
n.__superConstructor__ = k; | |
function n() { | |
if (k !== null) k.apply(this, arguments); | |
} | |
n.prototype.render = function() { | |
return (g.createElement("a", g.__spread({}, this.props, { | |
href: this.props.href | |
}), g.createElement("img", { | |
className: ((!this.props.isReply ? "_1ci" : '') + (this.props.isReply ? ' ' + "_1cj" : '')), | |
src: this.props.src | |
}))); | |
}; | |
n.propTypes = { | |
href: j.string.isRequired, | |
src: j.string.isRequired, | |
isReply: j.bool | |
}; | |
e.exports = n; | |
}, null); | |
__d("CommentsPluginComposer.react", ["CommentsPluginStore", "CommentsPluginComposerMirroringNotice.react", "CommentsPluginProfilePicture.react", "ComposedEntityMutability", "ComposedEntityType", "DocumentEntity", "EditorState", "MentionsInput.react", "React", "UFIImageBlock.react", "UFICommentUtils.react", "XUITypeaheadView.react", "createEditorStateWithEntities", "createEmptyEditorState", "cx", "fbt", "getMentionsInputDecorator", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var y = o, | |
z = y.PropTypes; | |
function aa(fa) { | |
return l.create(k.MENTION, j.IMMUTABLE, { | |
id: fa.id | |
}); | |
} | |
var ba = o.Component; | |
for (var ca in ba) | |
if (ba.hasOwnProperty(ca)) ea[ca] = ba[ca]; | |
var da = ba === null ? null : ba.prototype; | |
ea.prototype = Object.create(da); | |
ea.prototype.constructor = ea; | |
ea.__superConstructor__ = ba; | |
function ea(fa, ga) { | |
ba.call(this, fa, ga); | |
this.state = this.$CommentsPluginComposer0(); | |
var ha = this; | |
ha.$CommentsPluginComposer1 = this.$CommentsPluginComposer1.bind(this); | |
ha.$CommentsPluginComposer2 = this.$CommentsPluginComposer2.bind(this); | |
} | |
ea.prototype.$CommentsPluginComposer0 = function() { | |
var fa = null, | |
ga = null; | |
if (this.props.editCommentID) { | |
ga = g.getByID(this.props.editCommentID); | |
fa = s({ | |
text: ga.body.text, | |
ranges: q.shallowCopyRanges(ga.ranges).filter(function(ja) { | |
return !ja.entity.external; | |
}), | |
decorator: w(), | |
entityCreationFn: aa | |
}); | |
} else if (this.props.parentCommentIDOfNewReply) { | |
ga = g.getByID(this.props.parentCommentIDOfNewReply); | |
if (ga.replyToCommentID && g.getAuthor(ga.replyToCommentID).id !== g.getUser().id) { | |
var ha = g.getAuthor(ga.replyToCommentID), | |
ia = { | |
id: ha.id, | |
text: ha.name, | |
offset: 0, | |
length: ha.name.length, | |
entity: { | |
id: ha.id | |
} | |
}; | |
fa = m.moveFocusToEnd(s({ | |
text: ha.name + ' ', | |
ranges: [ia], | |
decorator: w(), | |
entityCreationFn: aa | |
})); | |
} | |
} | |
if (!fa) fa = t(w()); | |
return { | |
editorState: fa, | |
expanded: !!this.props.alwaysExpanded | |
}; | |
}; | |
ea.prototype.$CommentsPluginComposer3 = function() { | |
return !this.props.editCommentID && !this.props.parentCommentIDOfNewReply; | |
}; | |
ea.prototype.componentDidMount = function() { | |
g.addListener('composerCommentAdded', function(event) { | |
if (this.$CommentsPluginComposer3()) { | |
var fa = this.$CommentsPluginComposer0(); | |
fa.expanded = true; | |
this.setState(fa); | |
} | |
}.bind(this)); | |
if (!this.$CommentsPluginComposer3()) this.refs.composer.focus(); | |
}; | |
ea.prototype.$CommentsPluginComposer1 = function(fa) { | |
this.setState({ | |
editorState: fa | |
}); | |
if (this.props.editCommentID) { | |
g.setEditComposerState(fa, this.props.editCommentID); | |
} else g.setCreateComposerState(fa, this.props.parentCommentIDOfNewReply); | |
}; | |
ea.prototype.$CommentsPluginComposer4 = function() { | |
if (this.props.editCommentID) return g.isReply(this.props.editCommentID); | |
return !!this.props.parentCommentIDOfNewReply; | |
}; | |
ea.prototype.$CommentsPluginComposer2 = function() { | |
this.setState({ | |
expanded: true | |
}); | |
}; | |
ea.prototype.render = function() { | |
var fa = this.props.editCommentID ? g.getAuthor(this.props.editCommentID) : fa = g.getUser(), | |
ga = this.props.placeholder || v._("\u65b0\u589e\u56de\u61c9\u22ef\u22ef"), | |
ha = this.$CommentsPluginComposer4(); | |
return (o.createElement(p, { | |
spacing: "medium", | |
className: x((("_4uyl") + (ha ? ' ' + "_1zz6" : '') + (!this.state.expanded ? ' ' + "_1zz7" : '') + (!!this.state.expanded ? ' ' + "_1zz8" : '')), this.props.className) | |
}, g.isMobile() ? o.createElement("div", null) : o.createElement(i, { | |
href: fa.uri, | |
src: fa.thumbSrc, | |
isReply: ha, | |
target: "_blank" | |
}), o.createElement("div", null, o.createElement(n, { | |
className: (("_1cb") + (this.props.readOnly ? ' ' + "_5pu_" : '')), | |
editorState: this.state.editorState, | |
mentionsSource: g.getComposerSearchSource(), | |
onChange: this.$CommentsPluginComposer1, | |
onFocus: this.$CommentsPluginComposer2, | |
placeholder: ga, | |
readOnly: this.props.readOnly, | |
typeaheadView: r, | |
ref: "composer" | |
}), this.state.expanded ? o.createElement("div", { | |
className: "_4uym" | |
}, o.createElement(h, { | |
isReply: ha | |
}), this.props.children) : null))); | |
}; | |
ea.propTypes = { | |
editCommentID: z.string, | |
parentCommentIDOfNewReply: z.string, | |
readOnly: z.bool, | |
placeholder: z.node, | |
alwaysExpanded: z.bool | |
}; | |
e.exports = ea; | |
}, null); | |
__d("CommentsPluginComposerEdit.react", ["CommentsPluginActions", "CommentsPluginComposer.react", "CommentsPluginStore", "React", "XUIButton.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var n = j, | |
o = n.PropTypes, | |
p = j.Component; | |
for (var q in p) | |
if (p.hasOwnProperty(q)) s[q] = p[q]; | |
var r = p === null ? null : p.prototype; | |
s.prototype = Object.create(r); | |
s.prototype.constructor = s; | |
s.__superConstructor__ = p; | |
function s(t, u) { | |
p.call(this, t, u); | |
this.state = { | |
waitingAsyncResponse: false | |
}; | |
var v = this; | |
v.$CommentsPluginComposerEdit0 = this.$CommentsPluginComposerEdit0.bind(this); | |
v.$CommentsPluginComposerEdit1 = this.$CommentsPluginComposerEdit1.bind(this); | |
this.$CommentsPluginComposerEdit2 = null; | |
} | |
s.prototype.componentDidMount = function() { | |
this.$CommentsPluginComposerEdit2 = i.addListener('composerChange', function() { | |
return this.forceUpdate(); | |
}.bind(this)); | |
}; | |
s.prototype.componentWillUnmount = function() { | |
if (this.$CommentsPluginComposerEdit2) this.$CommentsPluginComposerEdit2.remove(); | |
}; | |
s.prototype.$CommentsPluginComposerEdit0 = function() { | |
this.setState({ | |
waitingAsyncResponse: true | |
}); | |
g.saveEdit(this.props.commentID); | |
}; | |
s.prototype.$CommentsPluginComposerEdit1 = function() { | |
g.cancelEdit(this.props.commentID); | |
}; | |
s.prototype.$CommentsPluginComposerEdit3 = function() { | |
return (this.state.waitingAsyncResponse || i.isEmptyEditComposer(this.props.commentID)); | |
}; | |
s.prototype.render = function() { | |
return (j.createElement(h, { | |
alwaysExpanded: true, | |
readOnly: this.state.waitingAsyncResponse, | |
editCommentID: this.props.commentID | |
}, j.createElement("div", { | |
className: "_5tr6 clearfix _2ph_" | |
}, j.createElement(k, { | |
disabled: this.$CommentsPluginComposerEdit3(), | |
label: m._("\u5132\u5b58"), | |
use: "confirm", | |
className: "rfloat _3-99", | |
onClick: this.$CommentsPluginComposerEdit0 | |
}), j.createElement(k, { | |
disabled: this.state.waitingAsyncResponse, | |
label: m._("\u53d6\u6d88"), | |
use: "default", | |
className: "rfloat _3-99", | |
onClick: this.$CommentsPluginComposerEdit1 | |
})), this.props.children)); | |
}; | |
s.propTypes = { | |
commentID: o.string.isRequired | |
}; | |
e.exports = s; | |
}, null); | |
__d("CommentsPluginMenu.react", ["CommentsPluginAction", "CommentsPluginActions", "CommentsPluginStore", "Image.react", "MixinCommentsPluginConfirmAction", "ReactXUIMenu", "PopoverMenu.react", "React", "Tooltip", "fbt", "ix"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var r = n, | |
s = r.PropTypes, | |
t = l.Item, | |
u = n.createClass({ | |
displayName: "CommentsPluginMenu", | |
mixins: [k], | |
propTypes: { | |
commentID: s.string.isRequired | |
}, | |
getInitialState: function() { | |
return { | |
opened: false, | |
actionConfirmationShown: false, | |
action: null | |
}; | |
}, | |
_onMenuShow: function() { | |
this.setState({ | |
opened: true | |
}); | |
}, | |
_onMenuHide: function() { | |
this.setState({ | |
opened: false | |
}); | |
}, | |
_toggleVisibility: function() { | |
h.toggleVisibility(this.props.commentID); | |
}, | |
_onAction: function(v, event) { | |
var w = event.item.getValue(); | |
if (this.requiresConfirmation(w)) { | |
this.confirmAction(w); | |
} else if (w === g.SHOW || w === g.COLLAPSE) { | |
this._toggleVisibility(); | |
} else h[w](this.props.commentID); | |
}, | |
_getMenuItem: function(v, w) { | |
var x = i.isReply(w.id); | |
switch (v) { | |
case g.DELETE: | |
case g.EDIT: | |
if (!w.canEdit) return null; | |
break; | |
case g.FLAG: | |
if (w.canEdit || w.collapsed || w.flagged) return null; | |
break; | |
case g.UNFLAG: | |
if (w.canEdit || !w.flagged) return null; | |
break; | |
case g.SHOW: | |
if (x || !w.collapsed) return null; | |
break; | |
case g.COLLAPSE: | |
if (x || w.collapsed || w.flagged) return null; | |
break; | |
case g.BAN: | |
case g.HIDE: | |
if (!i.isViewerModerator()) return null; | |
break; | |
case g.REPORT: | |
if (!w.reportURI) return null; | |
break; | |
default: | |
break; | |
} | |
return (n.createElement(t, { | |
value: v, | |
key: v | |
}, g.getLabel(v))); | |
}, | |
render: function() { | |
var v = i.getByID(this.props.commentID); | |
return (n.createElement("div", null, n.createElement(m, { | |
alignh: "right", | |
onShow: this._onMenuShow, | |
onHide: this._onMenuHide, | |
menu: n.createElement(l, { | |
onItemClick: this._onAction | |
}, g.getMenuActions().map(function(w) { | |
return this._getMenuItem(w, v); | |
}.bind(this))) | |
}, n.createElement("a", null, n.createElement(j, n.__spread({}, o.propsFor(p._("\u529f\u80fd\u8868")), { | |
src: q('/images/plugins/comments/chevron-down.png') | |
})))), this.renderActionConfirmationDialog(400))); | |
}, | |
isOpen: function() { | |
return this.state.opened; | |
} | |
}); | |
e.exports = u; | |
}, null); | |
__d("CommentsPluginAuthorSelector.react", ["ActorSelector.react", "CommentsPluginActions", "CommentsPluginStore", "React", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = j.Component; | |
for (var m in l) | |
if (l.hasOwnProperty(m)) o[m] = l[m]; | |
var n = l === null ? null : l.prototype; | |
o.prototype = Object.create(n); | |
o.prototype.constructor = o; | |
o.__superConstructor__ = l; | |
function o(p) { | |
l.call(this, p); | |
this.state = { | |
selectedActorID: i.getUser().id | |
}; | |
var q = this; | |
q.$CommentsPluginAuthorSelector0 = this.$CommentsPluginAuthorSelector0.bind(this); | |
} | |
o.prototype.$CommentsPluginAuthorSelector0 = function(p) { | |
this.setState({ | |
selectedActorID: p.value | |
}); | |
h.setUser(p.value); | |
}; | |
o.prototype.$CommentsPluginAuthorSelector1 = function(p) { | |
return (k._("\u6b63\u5728\u4ee5{actorName}\u7684\u8eab\u5206\u56de\u61c9", [k.param("actorName", p)])); | |
}; | |
o.prototype.render = function() { | |
var p = i.getActorIDs(); | |
return (p.length > 1 ? j.createElement("div", { | |
className: this.props.className | |
}, j.createElement(g, { | |
actorIDs: p, | |
coverEnabled: false, | |
selectedActorID: this.state.selectedActorID, | |
onChange: this.$CommentsPluginAuthorSelector0, | |
tooltipConstructor: this.$CommentsPluginAuthorSelector1 | |
})) : null); | |
}; | |
e.exports = o; | |
}, null); | |
__d("CommentsPluginComposerReply.react", ["CommentsPluginActions", "CommentsPluginAuthorSelector.react", "CommentsPluginComposer.react", "CommentsPluginStore", "React", "XUIButton.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var o = k, | |
p = o.PropTypes, | |
q = k.Component; | |
for (var r in q) | |
if (q.hasOwnProperty(r)) t[r] = q[r]; | |
var s = q === null ? null : q.prototype; | |
t.prototype = Object.create(s); | |
t.prototype.constructor = t; | |
t.__superConstructor__ = q; | |
function t(u, v) { | |
q.call(this, u, v); | |
this.state = { | |
waitingAsyncResponse: false | |
}; | |
var w = this; | |
w.$CommentsPluginComposerReply0 = this.$CommentsPluginComposerReply0.bind(this); | |
w.$CommentsPluginComposerReply1 = this.$CommentsPluginComposerReply1.bind(this); | |
this.$CommentsPluginComposerReply2 = null; | |
} | |
t.prototype.componentDidMount = function() { | |
this.$CommentsPluginComposerReply2 = j.addListener('composerChange', function() { | |
return this.forceUpdate(); | |
}.bind(this)); | |
}; | |
t.prototype.componentWillUnmount = function() { | |
if (this.$CommentsPluginComposerReply2) this.$CommentsPluginComposerReply2.remove(); | |
}; | |
t.prototype.$CommentsPluginComposerReply0 = function() { | |
this.setState({ | |
waitingAsyncResponse: true | |
}); | |
g.addReply(this.props.commentID); | |
}; | |
t.prototype.$CommentsPluginComposerReply1 = function() { | |
g.cancelReply(this.props.commentID); | |
}; | |
t.prototype.$CommentsPluginComposerReply3 = function() { | |
return (this.state.waitingAsyncResponse || j.isEmptyCreateComposer(this.props.commentID)); | |
}; | |
t.prototype.render = function() { | |
return (k.createElement(i, { | |
alwaysExpanded: true, | |
readOnly: this.state.waitingAsyncResponse, | |
parentCommentIDOfNewReply: this.props.commentID, | |
placeholder: n._("\u65b0\u589e\u56de\u8986\u2026\u2026") | |
}, k.createElement("div", { | |
className: "_5tr6 clearfix _2ph_" | |
}, k.createElement(l, { | |
disabled: this.$CommentsPluginComposerReply3(), | |
label: n._("\u56de\u8986"), | |
use: "confirm", | |
className: "rfloat _3-99", | |
onClick: this.$CommentsPluginComposerReply0 | |
}), k.createElement(l, { | |
disabled: this.state.waitingAsyncResponse, | |
label: n._("\u53d6\u6d88"), | |
use: "default", | |
className: "rfloat _3-99", | |
onClick: this.$CommentsPluginComposerReply1 | |
}), k.createElement(h, { | |
className: "rfloat" | |
})))); | |
}; | |
t.propTypes = { | |
commentID: p.string.isRequired | |
}; | |
e.exports = t; | |
}, null); | |
__d("CommentsPluginComment.react", ["ActorBio.react", "CenteredContainer.react", "CommentsPluginActions", "CommentsPluginCommentActions.react", "CommentsPluginComposerEdit.react", "CommentsPluginProfilePicture.react", "CommentsPluginMenu.react", "CommentsPluginComposerReply.react", "CommentsPluginStore", "HovercardLinkInterpolator", "Link.react", "Image.react", "React", "TruncatedTextWithEntities.react", "UFIActor.react", "UFICommentUtils.react", "UFIImageBlock.react", "XUIGrayText.react", "XUISpinner.react", "XUIText.react", "cx", "fbt", "joinClasses", "nullthrows", "xuiglyph"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da, ea) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var fa = s, | |
ga = fa.PropTypes, | |
ha = s.Component; | |
for (var ia in ha) | |
if (ha.hasOwnProperty(ia)) ka[ia] = ha[ia]; | |
var ja = ha === null ? null : ha.prototype; | |
ka.prototype = Object.create(ja); | |
ka.prototype.constructor = ka; | |
ka.__superConstructor__ = ha; | |
function ka(pa, qa) { | |
ha.call(this, pa, qa); | |
this.state = { | |
showMenu: false | |
}; | |
var ra = this; | |
ra.$CommentsPluginComment0 = this.$CommentsPluginComment0.bind(this); | |
ra.$CommentsPluginComment1 = this.$CommentsPluginComment1.bind(this); | |
} | |
ka.prototype.$CommentsPluginComment0 = function() { | |
this.setState({ | |
showMenu: true | |
}); | |
}; | |
ka.prototype.$CommentsPluginComment1 = function() { | |
if (!this.refs.menu || !this.refs.menu.isOpen()) this.setState({ | |
showMenu: false | |
}); | |
}; | |
ka.prototype.render = function() { | |
var pa = da(o.getByID(this.props.commentID)); | |
if (pa.deleted) return null; | |
if (pa.editor) return (s.createElement("div", { | |
className: "_3-8y" | |
}, s.createElement(k, { | |
commentID: this.props.commentID | |
}), s.createElement(oa, { | |
commentID: this.props.commentID, | |
className: "_3j_p" | |
}))); | |
var qa = v.shallowCopyRanges(pa.ranges), | |
ra = v.getCommentTextWithTruncatedURIs(qa, pa.body.text), | |
sa = null; | |
if (pa.collapsed || pa.flagged) { | |
sa = s.createElement("div", { | |
className: "_5mlf" | |
}, s.createElement(x, { | |
shade: "light" | |
}, ba._("\u9019\u5247\u7559\u8a00\u5df2\u7d93{action}", [ba.param("action", pa.collapsed ? 'collapsed' : 'flagged')]))); | |
} else sa = ra ? s.createElement(t, s.__spread({ | |
className: "_5mdd", | |
text: ra, | |
ranges: qa, | |
interpolator: function(xa, ya) { | |
return p(xa, ya, '_blank'); | |
} | |
}, o.getCommentBodyTruncationLimits(), { | |
renderEmoticons: true, | |
renderEmoji: true | |
})) : null; | |
var ta = da(o.getByID(pa.authorID)), | |
ua = o.isOptimisticComment(pa), | |
va = o.isReply(this.props.commentID), | |
wa = o.isMobile(); | |
return (s.createElement(w, { | |
className: (("_3-8y") + (!va ? ' ' + "_5nz1" : '')), | |
spacing: "medium", | |
onMouseEnter: this.$CommentsPluginComment0, | |
onMouseLeave: this.$CommentsPluginComment1 | |
}, s.createElement(l, { | |
href: ta.uri, | |
src: ta.thumbSrc, | |
isReply: va, | |
target: "_blank" | |
}), s.createElement("div", null, s.createElement(u, { | |
author: ta, | |
delimiter: wa ? ' ' : undefined, | |
key: "author", | |
showHovercard: !wa, | |
target: "_blank" | |
}, ta.bio ? s.createElement("div", { | |
className: "_4q1v" | |
}, s.createElement(g, { | |
target: "_blank", | |
preferredTypes: ta.bio.preferredTypes, | |
stats: ta.bio.stats | |
})) : null), s.createElement("div", { | |
className: "_3-8m" | |
}, sa), ua || pa.collapsed || pa.flagged ? null : s.createElement(j, { | |
commentID: this.props.commentID | |
}), s.createElement(oa, { | |
commentID: this.props.commentID | |
})), s.createElement("div", null, this.state.showMenu && !ua && !wa ? s.createElement(m, { | |
ref: "menu", | |
commentID: this.props.commentID | |
}) : null))); | |
}; | |
ka.propTypes = { | |
commentID: ga.string.isRequired | |
}; | |
var la = s.Component; | |
for (var ma in la) | |
if (la.hasOwnProperty(ma)) oa[ma] = la[ma]; | |
var na = la === null ? null : la.prototype; | |
oa.prototype = Object.create(na); | |
oa.prototype.constructor = oa; | |
oa.__superConstructor__ = la; | |
function oa(pa, qa) { | |
la.call(this, pa, qa); | |
this.state = { | |
loading: false | |
}; | |
var ra = this; | |
ra.$CommentsPluginCommentReplies0 = this.$CommentsPluginCommentReplies0.bind(this); | |
} | |
oa.prototype.$CommentsPluginCommentReplies0 = function() { | |
this.setState({ | |
loading: true | |
}); | |
o.addListener('moreRepliesCompleted', function(event) { | |
if (this.props.commentID === event.commentID) { | |
this.setState({ | |
loading: false | |
}); | |
o.removeCurrentListener(); | |
} | |
}.bind(this)); | |
i.showMoreReplies(this.props.commentID); | |
}; | |
oa.prototype.render = function() { | |
var pa = o.getByID(this.props.commentID), | |
qa = pa.public_replies; | |
if (qa === undefined || pa.collapsed === true || pa.flagged) return pa.composer ? s.createElement("div", { | |
className: ca("_44ri _2pis _3-8y", this.props.className) | |
}, s.createElement(n, { | |
commentID: this.props.commentID | |
})) : null; | |
if (!qa.commentIDs) qa.commentIDs = []; | |
var ra = qa.totalCount - qa.commentIDs.length, | |
sa = o.getPageSize(), | |
ta = ra < sa ? ra : sa; | |
return (s.createElement("div", { | |
className: ca("_44ri _2pis", this.props.className) | |
}, qa.commentIDs.map(function(ua) { | |
if (ua === this.props.commentID) return null; | |
return s.createElement(ka, { | |
commentID: ua, | |
key: ua | |
}); | |
}.bind(this)), o.hasUnloadedReplies(this.props.commentID) && ra > 0 ? s.createElement("div", { | |
className: "_5yct _3-8y _3-96 _2ph-" | |
}, this.state.loading ? s.createElement(h, null, s.createElement(y, { | |
size: "small" | |
})) : s.createElement(q, { | |
onClick: this.$CommentsPluginCommentReplies0 | |
}, s.createElement(z, { | |
size: "small", | |
weight: "bold" | |
}, ta === 1 ? ba._("\u986f\u793a\u8a0e\u8ad6\u4e32\u7684\u53e6 1 \u5247\u56de\u8986") : ba._("\u986f\u793a\u8a0e\u8ad6\u4e32\u7684\u5176\u4ed6{number of replies}\u5247\u56de\u8986", [ba.param("number of replies", ta)])), s.createElement(r, { | |
src: ea({ | |
name: 'triangle-down' | |
}) | |
}))) : null, pa.composer ? s.createElement("div", { | |
className: "_3-8y" | |
}, s.createElement(n, { | |
commentID: this.props.commentID | |
})) : null)); | |
}; | |
oa.propTypes = { | |
commentID: ga.string.isRequired | |
}; | |
e.exports = ka; | |
}, null); | |
__d("CommentsPluginLoadMore.react", ["CenteredContainer.react", "CommentsPluginActions", "CommentsPluginStore", "React", "XUIButton.react", "XUISpinner.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var o = j.Component; | |
for (var p in o) | |
if (o.hasOwnProperty(p)) r[p] = o[p]; | |
var q = o === null ? null : o.prototype; | |
r.prototype = Object.create(q); | |
r.prototype.constructor = r; | |
r.__superConstructor__ = o; | |
function r(s, t) { | |
o.call(this, s, t); | |
this.state = { | |
loading: false | |
}; | |
var u = this; | |
u.$CommentsPluginLoadMore0 = this.$CommentsPluginLoadMore0.bind(this); | |
} | |
r.prototype.$CommentsPluginLoadMore0 = function() { | |
h.showMoreComments(); | |
this.setState({ | |
loading: true | |
}); | |
i.addListener('moreCommentsCompleted', function() { | |
this.setState({ | |
loading: false | |
}); | |
i.removeCurrentListener(); | |
}.bind(this)); | |
}; | |
r.prototype.render = function() { | |
var s = i.getUnloadedCommentsCount(); | |
if (!i.hasUnloadedComments() || s < 1) return null; | |
if (this.state.loading) return (j.createElement(g, { | |
className: "_ndl" | |
}, j.createElement(l, { | |
size: "large" | |
}))); | |
var t = i.getPageSize(), | |
u = s < t ? s : t; | |
return (j.createElement("div", { | |
className: "_5o4h" | |
}, j.createElement(k, { | |
className: "_1gl3", | |
role: "button", | |
onClick: this.$CommentsPluginLoadMore0, | |
label: u === 1 ? n._("\u8f09\u5165\u53e6 1 \u5247\u7559\u8a00") : n._("\u8f09\u5165\u5176\u4ed6{pagesize}\u5247\u7559\u8a00", [n.param("pagesize", u)]) | |
}))); | |
}; | |
e.exports = r; | |
}, null); | |
__d("CommentsPluginListing.react", ["CommentsPluginComment.react", "CommentsPluginLoadMore.react", "CommentsPluginStore", "React", "cx"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var l = j.Component; | |
for (var m in l) | |
if (l.hasOwnProperty(m)) o[m] = l[m]; | |
var n = l === null ? null : l.prototype; | |
o.prototype = Object.create(n); | |
o.prototype.constructor = o; | |
o.__superConstructor__ = l; | |
function o() { | |
if (l !== null) l.apply(this, arguments); | |
} | |
o.prototype.render = function() { | |
var p = i.getCommentIDs(), | |
q = p.map(function(r) { | |
return j.createElement(g, { | |
commentID: r, | |
key: r | |
}); | |
}); | |
return (j.createElement("div", { | |
className: "_4k-6" | |
}, q, j.createElement(h, null))); | |
}; | |
e.exports = o; | |
}, null); | |
__d("CommentsPluginComposerComment.react", ["CommentsPluginActions", "CommentsPluginAuthorSelector.react", "CommentsPluginComposer.react", "CommentsPluginStore", "InputLabel.react", "LeftRight.react", "React", "XUIButton.react", "XUICheckboxInput.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var r = m.Component; | |
for (var s in r) | |
if (r.hasOwnProperty(s)) u[s] = r[s]; | |
var t = r === null ? null : r.prototype; | |
u.prototype = Object.create(t); | |
u.prototype.constructor = u; | |
u.__superConstructor__ = r; | |
function u(v) { | |
r.call(this, v); | |
this.state = { | |
selectedActorID: j.getUser().id, | |
postToFeed: false, | |
waitingAsyncResponse: false | |
}; | |
var w = this; | |
w.$CommentsPluginComposerComment0 = this.$CommentsPluginComposerComment0.bind(this); | |
w.$CommentsPluginComposerComment1 = this.$CommentsPluginComposerComment1.bind(this); | |
} | |
u.prototype.componentDidMount = function() { | |
j.addListener('composerChange', function() { | |
return this.forceUpdate(); | |
}.bind(this)); | |
j.addListener('composerCommentAdded', function() { | |
this.setState({ | |
waitingAsyncResponse: false | |
}); | |
}.bind(this)); | |
j.addListener('login', function() { | |
this.setState({ | |
waitingAsyncResponse: false | |
}); | |
}.bind(this)); | |
}; | |
u.prototype.$CommentsPluginComposerComment1 = function(event) { | |
var v = !this.state.postToFeed; | |
this.setState({ | |
postToFeed: v | |
}); | |
g.setPostToFeed(v); | |
}; | |
u.prototype.$CommentsPluginComposerComment2 = function() { | |
var v = this.state.selectedActorID; | |
if (v !== j.LOGGED_OUT_USER) return v; | |
return j.getUser().id; | |
}; | |
u.prototype.$CommentsPluginComposerComment0 = function() { | |
this.setState({ | |
waitingAsyncResponse: true | |
}); | |
g.setPostToFeed(this.state.postToFeed); | |
g.addComment(); | |
}; | |
u.prototype.$CommentsPluginComposerComment3 = function() { | |
return (this.state.waitingAsyncResponse || j.isEmptyCreateComposer()); | |
}; | |
u.prototype.render = function() { | |
var v = j.isLoggedIn() ? q._("\u767c\u4f48") : q._("\u767b\u5165\u5373\u53ef\u767c\u4f48\u8cbc\u6587"); | |
return (m.createElement(i, { | |
className: "_2392", | |
readOnly: this.state.waitingAsyncResponse | |
}, m.createElement(l, { | |
className: "_5tr6 clearfix _2ph-" | |
}, !j.isMirrored() ? m.createElement(k, { | |
className: "_1u0n" | |
}, m.createElement(o, { | |
checked: this.state.postToFeed, | |
onChange: this.$CommentsPluginComposerComment1 | |
}), m.createElement("label", { | |
className: "_3-99 _2ern _50f8 _5kx5" | |
}, q._("\u540c\u6642\u767c\u4f48\u5230 Facebook"))) : m.createElement("span", null), m.createElement("span", null, m.createElement(n, { | |
disabled: this.$CommentsPluginComposerComment3(), | |
label: v, | |
use: "confirm", | |
className: "rfloat _3-99", | |
onClick: this.$CommentsPluginComposerComment0 | |
}), m.createElement(h, { | |
className: "rfloat" | |
}))))); | |
}; | |
e.exports = u; | |
}, null); | |
__d("XPluginCommentsConfirmPostToFacebookAsyncDialogController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/plugins\/comments\/{comment_id}\/async\/confirm\/publish\/dialog\/", { | |
comment_id: { | |
type: "String", | |
required: true | |
}, | |
__asyncDialog: { | |
type: "Int" | |
} | |
}); | |
}, null); | |
__d("CommentsPlugin.react", ["AsyncDialog", "AsyncRequest", "CommentsPluginFooter.react", "CommentsPluginHeader.react", "CommentsPluginListing.react", "CommentsPluginComposerComment.react", "CommentsPluginStore", "XPluginCommentsConfirmPostToFacebookAsyncDialogController", "DOMQuery", "PluginResize", "React", "CommentsPluginSentryAction", "SimpleXUIDialog", "cx", "fbt", "getElementPosition", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var x = q, | |
y = x.PropTypes, | |
z = q.Component; | |
for (var aa in z) | |
if (z.hasOwnProperty(aa)) ca[aa] = z[aa]; | |
var ba = z === null ? null : z.prototype; | |
ca.prototype = Object.create(ba); | |
ca.prototype.constructor = ca; | |
ca.__superConstructor__ = z; | |
function ca() { | |
if (z !== null) z.apply(this, arguments); | |
} | |
ca.prototype.componentWillMount = function() { | |
m.init(this.props.comments, this.props.meta, this.props.initialOrdering); | |
m.addListener('postError', function(da) { | |
s.show(!!da.errorSummary ? da.errorSummary : u._("\u5f88\u62b1\u6b49\uff0c\u767c\u751f\u4e86\u932f\u8aa4\u3002\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002")); | |
}); | |
m.addListener('sentryAction', function(da, ea) { | |
switch (da) { | |
case r.CONFIRM_POST_TO_PROFILE: | |
var fa = n.getURIBuilder().setString('comment_id', ea).getURI(); | |
g.send(new h(fa).setData({ | |
iframe_referer: m.getIframeReferer() | |
})); | |
break; | |
default: | |
break; | |
} | |
}); | |
}; | |
ca.prototype.componentDidMount = function() { | |
p.auto(q.findDOMNode(this)); | |
var da = q.findDOMNode(this); | |
new p(function() { | |
return da.offsetWidth; | |
}, function() { | |
var ea = da.offsetHeight; | |
if (m.getCommentsCount() > 1) return ea; | |
var fa = o.scry(document.body, '.uiLayer:not(.hidden_elem) .uiContextualLayer'); | |
if (fa.length === 0) return ea; | |
var ga = v(fa[0]); | |
return Math.max(ea, ga.y + ga.height + 1); | |
}, 'resize.iframe', false).resize().auto(); | |
m.addListener('change', function() { | |
this.forceUpdate(); | |
}.bind(this)); | |
}; | |
ca.prototype.render = function() { | |
return (q.createElement("div", { | |
className: w("_56q9", this.props.className) | |
}, q.createElement("div", { | |
className: "_2pi8" | |
}, q.createElement(j, null), q.createElement(l, null), q.createElement(k, null), q.createElement(i, null)))); | |
}; | |
ca.propTypes = { | |
comments: y.object.isRequired, | |
meta: y.object.isRequired, | |
initialOrdering: y.string.isRequired | |
}; | |
e.exports = ca; | |
}, null); |
/*!CK:3369105415!*/ /*1429023754,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["qIUhH"]); | |
} | |
__d("AYMTHomepagePanelPostViewWrap.react", ["ApiClient", "Event", "HubbleContext", "HubbleDrillDownMixin", "HubblePostDrillDown", "React"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = l, | |
n = m.PropTypes, | |
o = l.createClass({ | |
displayName: "AYMTHomepagePanelPostViewWrap", | |
mixins: [j], | |
propTypes: { | |
drilldown: n.element, | |
post: n.object, | |
link: n.object, | |
context: n.object | |
}, | |
getDefaultProps: function() { | |
return { | |
drilldown: l.createElement(k, null) | |
}; | |
}, | |
getInitialState: function() { | |
return { | |
showDrillDown: false | |
}; | |
}, | |
handlePost: function() { | |
if (!this.props.post) return; | |
this.setState({ | |
drilldownProps: { | |
postCreatedTime: this.props.post.created_time, | |
postID: this.props.post.id, | |
postIdentifier: this.props.post.identifier, | |
postType: this.props.post.type, | |
postStatusType: this.props.post.status_type, | |
ref: 'AYMT_homepage_panel' | |
}, | |
showDrillDown: true | |
}); | |
return false; | |
}, | |
componentWillMount: function() { | |
h.listen(this.props.link, 'click', function() { | |
g.setClientID(this.props.context.appID); | |
g.setAccessToken(this.props.context.accessToken); | |
i.setContext(this.props.context); | |
this.handlePost(); | |
}.bind(this)); | |
}, | |
render: function() { | |
return (l.createElement("div", null)); | |
} | |
}); | |
e.exports = o; | |
}, null); | |
__d("AYMTRefreshElement", ["CSS", "URI", "DOM", "DOMQuery", "csx", "ge"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
init: function(m, n) { | |
m.subscribe('itemclick', function() { | |
g.addClass(n, 'async_saving'); | |
}); | |
}, | |
initObjectSelector: function(m, n) { | |
m.subscribe('itemclick', function() { | |
var o = m.getFocusedItem(), | |
p = new h(o._data.ajaxify).getQueryData(), | |
q = p.promoted_object, | |
r = j.scry(l('aymt_object_section'), "._2eka img")[0], | |
s = j.scry(l('aymt_object_section'), "._2ekc a")[0], | |
t; | |
if (s !== (void 0)) { | |
t = new h(s.dataset.hovercard); | |
t.setQueryData({ | |
id: q | |
}); | |
i.setAttributes(s, { | |
'data-hovercard': t.toString() | |
}); | |
i.setAttributes(s, { | |
href: '#' | |
}); | |
} else s = j.scry(l('aymt_object_section'), "._2ekc span")[0]; | |
i.setContent(s, o._data.label); | |
if (r !== (void 0)) { | |
if (t === (void 0)) { | |
t = new h(r.parentNode.dataset.hovercard); | |
t.setQueryData({ | |
id: q | |
}); | |
} | |
i.setAttributes(r, { | |
src: o._data.iconsrc | |
}); | |
i.setAttributes(r.parentNode, { | |
'data-hovercard': (t ? t.toString() : '#'), | |
href: '#' | |
}); | |
} | |
g.addClass(n, 'async_saving'); | |
}); | |
}, | |
initTimeRangeSelector: function(m, n) { | |
m.subscribe('itemclick', function() { | |
var o = m.getFocusedItem(), | |
p = j.scry(l('aymt_campaign_section'), "span ._2ekc")[0]; | |
i.setContent(p, o._data.label); | |
g.addClass(n, 'async_saving'); | |
}); | |
}, | |
fromLink: function(m, n) { | |
m.onclick = function() { | |
g.addClass(n, 'async_saving'); | |
}; | |
} | |
}; | |
}, null); | |
__d("AYMTHomepagePanelLogger", ["Event", "BanzaiLogger"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = { | |
init: function(j, k) { | |
g.listen(j, 'click', function(event) { | |
h.log('AYMTHomepagePanelLoggerConfig', k); | |
}); | |
} | |
}; | |
e.exports = i; | |
}, null); |
/*!CK:757870690!*/ /*1438697692,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["9pt1q"]); | |
} | |
__d("NotificationSeenState", ["NotificationConstants", "NotificationUpdates", "createObjectFrom"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = {}, | |
k = 1, | |
l = 2, | |
m = 0, | |
n = k, | |
o = k | l, | |
p = g.PayloadSourceType.INITIAL_LOAD, | |
q = { | |
UNSEEN_AND_UNREAD: m, | |
SEEN_BUT_UNREAD: n, | |
SEEN_AND_READ: o | |
}; | |
function r(u) { | |
var v = [], | |
w = []; | |
Object.keys(u).forEach(function(x) { | |
var y = u[x], | |
z = j[x]; | |
j[x] = y; | |
if (z === (void 0)) { | |
v.push(x); | |
w.push(x); | |
return; | |
} | |
var aa = z ^ y; | |
if (aa & k) v.push(x); | |
if (aa & l) w.push(x); | |
}); | |
v.length && h.didUpdateSeenState(v); | |
w.length && h.didUpdateReadState(w); | |
} | |
h.subscribe('update-notifications', function(u, v) { | |
var w = v.nodes; | |
if (!w || !w.length) return; | |
var x = v.payloadsource, | |
y = g.PayloadSourceType, | |
z = x == y.ENDPOINT, | |
aa = {}; | |
v.nodes.forEach(function(ba) { | |
var ca = ba.alert_id; | |
if (!z || j[ca] === (void 0)) aa[ca] = q[ba.seen_state]; | |
}); | |
r(aa); | |
}); | |
h.subscribe('update-seen', function(u, v) { | |
if (!v.seenState) return; | |
var w = [], | |
x = {}; | |
Object.keys(v.seenState).forEach(function(z) { | |
if (!v.seenState[z]) { | |
w.push(z); | |
return; | |
} | |
var aa = j[z]; | |
if (aa !== (void 0)) x[z] = aa | k; | |
}); | |
var y = Object.assign({}, i(w, m), x); | |
r(y); | |
}); | |
h.subscribe('update-read', function(u, v) { | |
if (!v.readState) return; | |
var w = [], | |
x = {}; | |
Object.keys(v.readState).forEach(function(z) { | |
if (v.readState[z]) { | |
w.push(z); | |
return; | |
} | |
var aa = j[z]; | |
if (aa !== (void 0)) { | |
x[z] = aa & ~l; | |
} else if (v.payloadsource == p) x[z] = n; | |
}); | |
var y = Object.assign({}, i(w, o), x); | |
r(y); | |
}); | |
function s(u) { | |
var v = j[u]; | |
return v; | |
} | |
var t = { | |
isRead: function(u) { | |
return s(u) === o; | |
}, | |
isSeen: function(u) { | |
return s(u) !== m; | |
}, | |
getUnseenCount: function() { | |
return t.getUnseenIDs().length; | |
}, | |
getUnseenIDs: function() { | |
return Object.keys(j).filter(function(u) { | |
return j[u] === m; | |
}); | |
}, | |
getUnreadCount: function() { | |
return t.getUnreadIDs().length; | |
}, | |
getUnreadIDs: function() { | |
return Object.keys(j).filter(function(u) { | |
return j[u] !== o; | |
}); | |
} | |
}; | |
e.exports = t; | |
}, null); | |
__d("NotificaionJewelControllerModuleLoader", ["JSResource", "NotificationSeenState", "NotificationStore", "NotificationUpdates"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
b('NotificationSeenState'); | |
b('NotificationStore'); | |
b('NotificationUpdates'); | |
e.exports = g('NotificationJewelController'); | |
}, null); | |
__d("NotificationJewelHeaderController", ["DOM", "Event", "NotificationSeenState", "NotificationUserActions", "NotificationUpdates"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
function l(m, n) { | |
"use strict"; | |
h.listen(m, 'click', function() { | |
var o = i.getUnreadIDs(); | |
if (o.length) j.markNotificationsAsRead(o); | |
}); | |
k.subscribe('read-state-updated', function() { | |
if (n) g.setContent(n, i.getUnreadCount()); | |
}); | |
} | |
e.exports = l; | |
}, null); | |
__d("NotificationGNFState", ["NotificationUpdates", "isEmpty"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = {}; | |
g.subscribe('update-notifications', function(k, l) { | |
var m = l.nodes; | |
if (!m || !m.length) return; | |
var n = {}; | |
l.nodes.forEach(function(o) { | |
var p = o.alert_id; | |
if (i[p] !== o.gaveGNF) n[p] = o.gaveGNF; | |
}); | |
if (!h(n)) { | |
i = Object.assign(i, n); | |
g.didUpdateGNFState(Object.keys(n)); | |
} | |
}); | |
g.subscribe('update-gnf', function(k, l) { | |
if (l.gnfState) { | |
i = Object.assign(i, l.gnfState); | |
g.didUpdateGNFState(Object.keys(l.gnfState)); | |
} | |
}); | |
var j = { | |
gaveGNF: function(k) { | |
return !!i[k]; | |
} | |
}; | |
e.exports = j; | |
}, null); | |
__d("NotificationHiddenState", ["NotificationUpdates", "NotificationConstants", "isEmpty"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = {}; | |
g.subscribe('update-notifications', function(l, m) { | |
var n = m.nodes, | |
o = m.payloadsource; | |
if (o === h.PayloadSourceType.LIVE_SEND && n && n.length) { | |
var p = {}; | |
n.forEach(function(q) { | |
var r = q.alert_id; | |
if (j[r]) p[r] = false; | |
}); | |
if (!i(p)) { | |
j = Object.assign(j, p); | |
g.didUpdateHiddenState(Object.keys(p)); | |
} | |
} | |
}); | |
g.subscribe('update-hidden', function(l, m) { | |
if (m.hiddenState) { | |
j = Object.assign(j, m.hiddenState); | |
g.didUpdateHiddenState(Object.keys(m.hiddenState)); | |
} | |
}); | |
var k = { | |
isHidden: function(l) { | |
if (j[l]) return j[l]; | |
return false; | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("NotificationList.react", ["NotificationConstants", "NotificationGNFState", "NotificationHiddenState", "NotificationSeenState", "NotificationStore", "NotificationUpdates", "NotificationUserActions", "React", "getObjectValues", "isEmpty", "mapObject"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
var r = n, | |
s = r.PropTypes, | |
t = g.PayloadSourceType.LIVE_SEND, | |
u = n.createClass({ | |
displayName: "NotificationList", | |
propTypes: { | |
businessID: s.string, | |
hasEverBeenOpened: s.bool, | |
maxHeight: s.number, | |
negativeTracking: s.object, | |
paused: s.bool, | |
tracking: s.string, | |
useChevron: s.bool, | |
numPerPage: s.number.isRequired, | |
listRenderer: s.func.isRequired, | |
upsell: s.object | |
}, | |
getInitialState: function() { | |
this._currentlyFetching = false; | |
this._pendingNotifs = {}; | |
this._shouldScroll = false; | |
var v = q(this.props.staticNotifs, function(w) { | |
return !!w.gaveGNF; | |
}); | |
return { | |
canFetchMore: true, | |
notifs: {}, | |
hiddenState: {}, | |
readState: {}, | |
gnfState: v || {}, | |
showingChevron: false | |
}; | |
}, | |
componentWillMount: function() { | |
k.setBusinessID(this.props.businessID); | |
this._subscriptions = [l.subscribe('notifications-updated', function(v, w) { | |
if (w.source == t && !p(w.updates)) { | |
this._shouldScroll = true; | |
if (this.props.paused !== false) this._pendingNotifs = Object.assign({}, this._pendingNotifs, w.updates); | |
return; | |
} | |
this._fetchAndUpdate(k.getCount()); | |
}.bind(this)), l.subscribe(['hidden-state-updated', 'read-state-updated', 'gnf-state-updated'], function(v, w) { | |
if (v == 'hidden-state-updated') { | |
if (w.source !== t || !this.props.paused) { | |
var x = {}; | |
Object.keys(w.updates).forEach(function(aa) { | |
x[aa] = i.isHidden(aa); | |
}); | |
this.setState({ | |
hiddenState: Object.assign({}, this.state.hiddenState, x) | |
}); | |
} | |
} else if (v == 'gnf-state-updated') { | |
var y = {}; | |
Object.keys(w.updates).forEach(function(aa) { | |
y[aa] = h.gaveGNF(aa); | |
}); | |
this.setState({ | |
gnfState: Object.assign({}, this.state.gnfState, y) | |
}); | |
} else { | |
var z = {}; | |
Object.keys(w.updates).forEach(function(aa) { | |
z[aa] = j.isRead(aa); | |
}); | |
this.setState({ | |
readState: Object.assign({}, this.state.readState, z) | |
}); | |
} | |
}.bind(this))]; | |
}, | |
componentWillUnmount: function() { | |
if (this._subscriptions) { | |
while (this._subscriptions.length) this._subscriptions.pop().unsubscribe(); | |
this._subscriptions = null; | |
} | |
}, | |
_getNotifsWithCurrentOrder: function(v) { | |
var w = Object.keys(this.state.notifs), | |
x = Object.keys(v).filter(function(z) { | |
return !this.state.notifs[z]; | |
}.bind(this)); | |
w = w.concat(x); | |
var y = {}; | |
w.forEach(function(z) { | |
if (this._pendingNotifs[z]) { | |
if (this.state.notifs[z]) y[z] = this.state.notifs[z]; | |
} else y[z] = v[z]; | |
}.bind(this)); | |
return y; | |
}, | |
_fetchAndUpdate: function(v) { | |
this._currentlyFetching = true; | |
k.getNotifications(v, function(w) { | |
var x = p(this._pendingNotifs) ? w : this._getNotifsWithCurrentOrder(w), | |
y = {}, | |
z = {}, | |
aa = {}; | |
o(x).forEach(function(ba) { | |
var ca = ba.alert_id; | |
if (!this.state || !this.state.readState[ca]) y[ca] = j.isRead(ca); | |
if (!this.state || !this.state.hiddenState[ca]) z[ca] = i.isHidden(ca); | |
if (!this.state || !this.state.gnfState[ca]) aa[ca] = h.gaveGNF(ca); | |
}); | |
this._currentlyFetching = false; | |
this.setState({ | |
notifs: x, | |
canFetchMore: k.canFetchMore() || k.getCount() != Object.keys(x).length, | |
readState: Object.assign({}, this.state.readState, y), | |
hiddenState: Object.assign({}, this.state.hiddenState, z), | |
gnfState: Object.assign({}, this.state.gnfState, aa) | |
}); | |
}.bind(this)); | |
}, | |
_fetchAndUpdateAll: function() { | |
var v = {}; | |
Object.keys(this._pendingNotifs).forEach(function(w) { | |
var x = i.isHidden(w); | |
if (x != this.state.hiddenState[w]) v[w] = i.isHidden(w); | |
}.bind(this)); | |
if (!p(v)) this.setState({ | |
hiddenState: Object.assign({}, this.state.hiddenState, v) | |
}); | |
this._pendingNotifs = {}; | |
this._fetchAndUpdate(k.getCount()); | |
}, | |
_fetchNextSet: function() { | |
if (!this._currentlyFetching) { | |
var v = Object.keys(this.state.notifs).length; | |
this._fetchAndUpdate(v + this.props.numPerPage); | |
} | |
}, | |
_onScrollAndUpdate: function(v) { | |
if (this._currentlyFetching || !this.state.canFetchMore) return; | |
if (v) this._fetchNextSet(); | |
}, | |
_onChevronShow: function() { | |
this.setState({ | |
showingChevron: true | |
}); | |
}, | |
_onChevronHide: function() { | |
this.setState({ | |
showingChevron: false | |
}); | |
}, | |
_updateNotifInContainer: function(v) { | |
if (v.length > this.props.numPerPage) { | |
this._fetchAndUpdate(v.length); | |
} else this._fetchNextSet(); | |
return; | |
}, | |
componentDidUpdate: function(v) { | |
var w = j.getUnseenIDs(); | |
if (!p(this._pendingNotifs)) w = w.filter(function(x) { | |
return !this._pendingNotifs[x]; | |
}.bind(this)); | |
if (w.length && this.props.paused) m.markNotificationsAsSeen(w); | |
if (!v.hasEverBeenOpened && this.props.hasEverBeenOpened) this._updateNotifInContainer(w); | |
if (v.paused && !this.props.paused) { | |
this._shouldScroll = false; | |
setTimeout(this._fetchAndUpdateAll, 0); | |
return; | |
} | |
}, | |
render: function() { | |
var v = this.props.listRenderer; | |
return (n.createElement(v, { | |
hasEverBeenOpened: this.props.hasEverBeenOpened, | |
paused: this.props.paused, | |
tracking: this.props.tracking, | |
negativeTracking: this.props.negativeTracking, | |
shortenTimestamp: this.props.shortenTimestamp, | |
businessID: this.props.businessID, | |
maxHeight: this.props.maxHeight, | |
useChevron: this.props.useChevron, | |
notifs: this.state.notifs, | |
afterScroll: this._onScrollAndUpdate, | |
onChevronShow: this._onChevronShow, | |
onChevronHide: this._onChevronHide, | |
canFetchMore: this.state.canFetchMore, | |
hiddenState: this.state.hiddenState, | |
readState: this.state.readState, | |
gnfState: this.state.gnfState, | |
showingChevron: this.state.showingChevron, | |
shouldScroll: this._shouldScroll, | |
upsell: this.props.upsell || null, | |
isRHC: this.props.isRHC | |
})); | |
} | |
}); | |
e.exports = u; | |
}, null); | |
__d("NotificationListPropTypes", ["React"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var h = g, | |
i = h.PropTypes, | |
j = { | |
negativeTracking: i.object, | |
tracking: i.string, | |
useChevron: i.bool, | |
notifs: i.object, | |
afterScroll: i.func, | |
onChevronShow: i.func, | |
onChevronHide: i.func, | |
canFetchMore: i.bool, | |
hiddenState: i.object, | |
readState: i.object, | |
gnfState: i.object, | |
showingChevron: i.bool, | |
paused: i.bool, | |
maxHeight: i.number, | |
shouldScroll: i.bool, | |
upsell: i.object | |
}; | |
e.exports = j; | |
}, null); | |
__d("FlexibleBlock.react", ["LeftRight.react", "React", "cx", "invariant", "keyMirror"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = k({ | |
left: true, | |
right: true | |
}); | |
function m(o) { | |
j(o.flex && o.flex in n.FLEX); | |
j(o.children && o.children.length === 2); | |
} | |
var n = h.createClass({ | |
displayName: "FlexibleBlock", | |
render: function() { | |
m(this.props); | |
var o, p = this.props.children[0], | |
q = this.props.children[1], | |
r = this.props.flex == l.left, | |
s; | |
if (r) { | |
s = p; | |
o = g.DIRECTION.right; | |
} else { | |
s = q; | |
o = g.DIRECTION.left; | |
} | |
var t = h.createElement("div", { | |
className: "_42ef" | |
}, s); | |
return (h.createElement(g, h.__spread({}, this.props, { | |
direction: o | |
}), r ? t : this.props.children[0], r ? this.props.children[1] : t)); | |
} | |
}); | |
n.FLEX = l; | |
e.exports = n; | |
}, null); | |
__d("NotificationPhotoThumbnail", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(i) { | |
if (!i.media || !i.style_list || !i.style_list.length) return null; | |
switch (i.style_list[0]) { | |
case 'new_album': | |
case 'album': | |
case 'application': | |
case 'photo': | |
case 'video': | |
case 'video_autoplay': | |
case 'video_inline': | |
return i.media.image; | |
default: | |
return null; | |
} | |
} | |
var h = { | |
getThumbnail: function(i, j, k) { | |
var l; | |
if (i && i.length) { | |
i.some(function(p) { | |
l = g(p); | |
if (l) return true; | |
return false; | |
}); | |
if (l) return l; | |
} | |
if (k) { | |
var m = k.relevant_comments; | |
if (m && m.length) { | |
var n = m[0].attachments; | |
if (n && n.length) { | |
l = g(n[0]); | |
if (l) return l; | |
} | |
} | |
} | |
if (j) { | |
var o = j.attachments; | |
if (o && o.length) return g(o[0]); | |
} | |
return null; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("NotificationURI", ["BusinessURI.brands", "URI", "isFacebookURI", "VideoPermalinkURI"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = { | |
localize: function(l) { | |
l = g(l); | |
if (!i(l)) return l.toString(); | |
var m = l.getSubdomain(); | |
return l.getUnqualifiedURI().getQualifiedURI().setSubdomain(m).toString(); | |
}, | |
snowliftable: function(l) { | |
if (!l) return false; | |
l = new h(l); | |
var m = l.getQueryData(); | |
return i(l) && (j.isValid(l) || 'fbid' in m); | |
}, | |
isVaultSetURI: function(l) { | |
return this._areEquals(l, '/ajax/vault/sharer_preview.php'); | |
}, | |
isAlbumDraftRecoveryDialogURI: function(l) { | |
return this._areEquals(l, '/ajax/photos/upload/overlay/'); | |
}, | |
_areEquals: function(l, m) { | |
if (!l) return false; | |
l = new h(l); | |
return i(l) && l.getPath() === m; | |
}, | |
_startsWith: function(l, m) { | |
if (!l) return false; | |
l = new h(l); | |
return i(l) && l.getPath().startsWith(m); | |
} | |
}; | |
e.exports = k; | |
}, null); | |
__d("NotificationListItem.react", ["AsyncResponse", "BizSiteIdentifier.brands", "BanzaiLogger", "CloseButton.react", "Event", "FlexibleBlock.react", "ImageBlock.react", "Keys", "List.react", "NotificationPhotoThumbnail", "NotificationTokens", "NotificationURI", "NotificationUserActions", "React", "TextWithEntities.react", "ReadToggle.react", "Timestamp.react", "VaultBoxURI", "XUIButton.react", "PopoverMenu.react", "ReactXUIMenu", "cx", "invariant", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da) { | |
b.__markCompiled && b.__markCompiled(); | |
var ea = aa.Item; | |
function fa(ia, ja) { | |
return t.createElement("span", { | |
className: "fwb" | |
}, ia); | |
} | |
function ga(ia) { | |
return !!(ia && ia.id && !ia.is_facebook_app); | |
} | |
var ha = t.createClass({ | |
displayName: "NotificationListItem", | |
getInitialState: function() { | |
return { | |
showingOptions: false, | |
negativeFeedbackConfirmation: null, | |
canReportAsSpam: false, | |
spamReportConfirmation: null, | |
sendingFeedback: false, | |
mayUndoHide: false, | |
genericNegativeFeedbackConfirmation: null, | |
isBizSite: h.isBizSite() | |
}; | |
}, | |
_onKeyDownItem: function(ia) { | |
if (k.getKeyCode(ia.nativeEvent) == n.RETURN) this._markItemRead(); | |
}, | |
_markItemReadIfUnreadFromReadButton: function() { | |
if (!this.props.isRead) s.setNextIsFromReadButton(true); | |
this._markItemReadIfUnread(); | |
}, | |
_markItemReadIfUnread: function() { | |
!this.props.isRead && this._markItemRead(); | |
}, | |
_markItemRead: function() { | |
s.markNotificationsAsRead([this.props.alert_id]); | |
}, | |
_onFeedbackError: function(ia) { | |
g.defaultErrorHandler(ia); | |
this.setState({ | |
sendingFeedback: false | |
}); | |
}, | |
_onHideSuccess: function(ia) { | |
var ja = ia.getPayload(); | |
ca(ja.confirmation); | |
this.setState({ | |
negativeFeedbackConfirmation: ja.confirmation, | |
canReportAsSpam: ja.canReportAsSpam, | |
sendingFeedback: false, | |
showingOptions: true | |
}); | |
}, | |
_onHideAppSuccess: function(ia) { | |
var ja = ia.getPayload(), | |
ka = ja.confirmation, | |
la = ja.canReportAsSpam; | |
ca(ka); | |
this.setState({ | |
negativeFeedbackConfirmation: ka, | |
canReportAsSpam: la, | |
mayUndoHide: true, | |
sendingFeedback: false, | |
showingOptions: true | |
}); | |
}, | |
_onSpamReportSuccess: function(ia) { | |
var ja = ia.getPayload().spamReportConfirmation; | |
this.setState({ | |
negativeFeedbackConfirmation: null, | |
spamReportConfirmation: ja, | |
sendingFeedback: false | |
}); | |
}, | |
_onHide: function() { | |
s.markNotificationAsHidden(this.props.alert_id, this._onHideSuccess, this._onFeedbackError); | |
this.setState({ | |
sendingFeedback: true, | |
mayUndoHide: true | |
}); | |
}, | |
_onShowSuccess: function() { | |
this.setState({ | |
genericNegativeFeedbackConfirmation: null, | |
negativeFeedbackConfirmation: null, | |
sendingFeedback: false, | |
showingOptions: false | |
}); | |
}, | |
_onShow: function() { | |
var ia = this.props.negative ? this.props.negative.subscription_level : null; | |
s.markNotificationAsVisible(this.props.alert_id, ia, this._onShowSuccess, this._onFeedbackError); | |
this.setState({ | |
sendingFeedback: true | |
}); | |
}, | |
_onReportSpam: function() { | |
s.markNotificationAsSpam(this.props.alert_id, this._onSpamReportSuccess, this._onFeedbackError); | |
this.setState({ | |
sendingFeedback: true | |
}); | |
}, | |
_markAppAsHidden: function() { | |
s.markAppAsHidden(this.props.alert_id, this.props.application.id, this._onHideAppSuccess, this._onFeedbackError); | |
this.setState({ | |
sendingFeedback: true | |
}); | |
}, | |
_markAppAsVisible: function() { | |
s.markAppAsVisible(this.props.alert_id, this.props.application.id, function() { | |
this.setState({ | |
negativeFeedbackConfirmation: null, | |
sendingFeedback: false, | |
showingOptions: false, | |
mayUndoHide: false | |
}); | |
}.bind(this), this._onFeedbackError); | |
this.setState({ | |
sendingFeedback: true | |
}); | |
}, | |
_renderAttachedImage: function(ia) { | |
if (ia) return (t.createElement("img", { | |
src: ia.uri, | |
className: "_42td", | |
"aria-hidden": true | |
})); | |
return t.createElement("span", null); | |
}, | |
_getModifiedTrackingString: function(ia) { | |
return JSON.stringify(Object.assign({}, JSON.parse(this.props.tracking), ia)); | |
}, | |
_onClickCloseButton: function() { | |
if (this.props.useChevron) { | |
this.showCloseOptionOnMenuClose = true; | |
} else this.setState({ | |
showingOptions: true | |
}); | |
}, | |
_onCancelNegativeFeedback: function() { | |
this.setState({ | |
showingOptions: false | |
}); | |
}, | |
shouldComponentUpdate: function(ia, ja) { | |
return (this.props.visible !== ia.visible || this.props.isRead !== ia.isRead || this.props.timestamp !== ia.timestamp || this.props.gnfGiven !== ia.gnfGiven || this.props.paused !== ia.paused || this.state.showingOptions !== ja.showingOptions || this.state.sendingFeedback !== ja.sendingFeedback || this.state.canReportAsSpam !== ja.canReportAsSpam || this.state.spamReportConfirmation !== ja.spamReportConfirmation); | |
}, | |
componentWillReceiveProps: function(ia) { | |
if (this.props.paused && !ia.paused && !this.props.visible && this.state.mayUndoHide) this.setState({ | |
mayUndoHide: false | |
}); | |
}, | |
_onChevronHide: function() { | |
this.props.onChevronHide(); | |
this._logChevronEvent('close'); | |
if (this.showCloseOptionOnMenuClose) { | |
this.showCloseOptionOnMenuClose = false; | |
this._turnOff(); | |
} | |
}, | |
_turnOff: function() { | |
var ia = ga(this.props.application) ? this._markAppAsHidden : this._onHide; | |
ia(); | |
}, | |
_onChevronShow: function() { | |
this.props.onChevronShow(); | |
this._logChevronEvent('open'); | |
}, | |
_logChevronEvent: function(ia) { | |
var ja = { | |
event: ia, | |
notif_type: this.props.notif_type, | |
notif_id: parseInt(q.untokenizeIDs([this.props.alert_id])[0], 10) | |
}; | |
i.log('NotifJewelMenuLoggerConfig', ja); | |
}, | |
_onGenericSuccess: function(ia) { | |
this.setState({ | |
showingOptions: true, | |
sendingFeedback: false, | |
genericNegativeFeedbackConfirmation: ia | |
}); | |
}, | |
_onClickGenericNegative: function() { | |
this.setState({ | |
sendingFeedback: true, | |
mayUndoHide: true | |
}); | |
s.giveGenericNegativeFeedback(this.props.alert_id, this._onGenericSuccess, this._onFeedbackError); | |
}, | |
_undoGenericNegative: function() { | |
this.setState({ | |
sendingFeedback: true | |
}); | |
s.undoGenericNegativeFeedback(this.props.alert_id, this._onShowSuccess, this._onFeedbackError); | |
}, | |
render: function() { | |
if (!this.props.visible && !this.state.mayUndoHide) return t.createElement("li", { | |
className: "_4_62" | |
}); | |
var ia = this.props.negative, | |
ja = this.props.negativeTracking, | |
ka = (("_33c") + (!this.props.isRead ? ' ' + "_4af" : '') + (this.state.showingOptions ? ' ' + "_4ag" : '') + (this.state.sendingFeedback ? ' ' + "_4m8s" : '')); | |
if (this.state.negativeFeedbackConfirmation) { | |
var la = this.state.negativeFeedbackConfirmation, | |
ma = null, | |
na = null; | |
if (this.state.canReportAsSpam) | |
if (!this.props.useChevron) { | |
ma = t.createElement("span", null, t.createElement("span", { | |
className: "mhs" | |
}, "·"), t.createElement("a", { | |
href: "#", | |
onClick: this._onReportSpam | |
}, da._("\u6aa2\u8209\u5783\u573e\u8a0a\u606f\u7684\u61c9\u7528\u7a0b\u5f0f"))); | |
} else na = t.createElement(o, { | |
border: "none", | |
spacing: "small", | |
className: "_1v4c" | |
}, t.createElement("li", null, t.createElement("a", { | |
href: "#", | |
onClick: this._onReportSpam, | |
className: "mls" | |
}, da._("\u6aa2\u8209\u5783\u573e\u8a0a\u606f\u7684\u61c9\u7528\u7a0b\u5f0f")))); | |
var oa = ga(this.props.application) ? this._markAppAsVisible : this._onShow, | |
pa = !this.props.useChevron ? t.createElement("a", { | |
href: "#", | |
onClick: oa, | |
className: "mls" | |
}, da._("\u53d6\u6d88\u522a\u9664")) : null; | |
return (t.createElement("li", { | |
className: ka, | |
"data-gt": this.props.tracking | |
}, t.createElement("div", { | |
className: "_4ai" | |
}, t.createElement(u, { | |
interpolator: fa, | |
ranges: la.ranges, | |
aggregatedranges: la.aggregated_ranges, | |
text: la.text | |
}), pa, ma), na)); | |
} | |
var qa = this.state.spamReportConfirmation; | |
if (qa) return (t.createElement("li", { | |
className: ka, | |
"data-gt": this.props.tracking | |
}, t.createElement("div", { | |
className: "_4ai" | |
}, t.createElement(u, { | |
interpolator: fa, | |
ranges: qa.ranges, | |
aggregatedranges: qa.aggregated_ranges, | |
text: qa.text | |
})))); | |
if (this.state.genericNegativeFeedbackConfirmation) { | |
la = this.state.genericNegativeFeedbackConfirmation; | |
var ra = ia ? t.createElement("li", null, t.createElement("a", { | |
href: "#", | |
"data-gt": xa, | |
onClick: this._turnOff, | |
className: "mls", | |
ref: "closeButton" | |
}, ia.menu_option_text)) : null; | |
return (t.createElement("li", { | |
className: ka, | |
"data-gt": this.props.tracking | |
}, t.createElement("div", { | |
className: "_4ai" | |
}, t.createElement(u, { | |
interpolator: fa, | |
ranges: la.ranges, | |
aggregatedranges: la.aggregated_ranges, | |
text: la.text | |
}), t.createElement("a", { | |
href: "#", | |
onClick: this._undoGenericNegative, | |
className: "mls" | |
}, da._("\u53d6\u6d88\u522a\u9664"))), t.createElement(o, { | |
border: "none", | |
spacing: "small", | |
className: "_1v4c" | |
}, ra))); | |
} | |
if (this.state.showingOptions && !this.props.useChevron) { | |
var sa = ga(this.props.application) ? this._markAppAsHidden : this._onHide; | |
return (t.createElement("li", { | |
className: ka, | |
"data-gt": this.props.tracking | |
}, t.createElement("div", { | |
className: "_4ai" | |
}, t.createElement("div", null, t.createElement(u, { | |
interpolator: fa, | |
ranges: ia.confirm_question.ranges, | |
aggregatedranges: ia.confirm_question.aggregated_ranges, | |
text: ia.confirm_question.text | |
})), t.createElement("div", { | |
className: "mts" | |
}, t.createElement(y, { | |
"data-gt": this._getModifiedTrackingString(ja.confirm), | |
href: { | |
url: '#' | |
}, | |
label: ia.turn_off, | |
use: "confirm", | |
onClick: sa, | |
disabled: this.state.sendingFeedback | |
}), t.createElement(y, { | |
"data-gt": this._getModifiedTrackingString(ja.cancel), | |
href: { | |
url: '#' | |
}, | |
label: da._("\u4fdd\u6301\u958b\u5553"), | |
onClick: this._onCancelNegativeFeedback, | |
disabled: this.state.sendingFeedback | |
}))))); | |
} | |
var ta = null; | |
if (this.props.title) ta = t.createElement(u, { | |
interpolator: fa, | |
ranges: this.props.title.ranges, | |
aggregatedranges: this.props.title.aggregated_ranges, | |
text: this.props.title.text, | |
renderEmoji: true, | |
renderEmoticons: true | |
}); | |
var ua = null, | |
va = null; | |
if (ia) { | |
var wa = this._onClickCloseButton, | |
xa; | |
xa = this._getModifiedTrackingString(ja.click); | |
var ya = (("_4ah") + (' ' + "_55m9")); | |
ua = t.createElement(j, { | |
className: ya, | |
"data-gt": xa, | |
size: "medium", | |
tooltip: ia.button_tooltip, | |
onClick: wa, | |
ref: "closeButton" | |
}); | |
} | |
var za = r.localize(this.props.url), | |
ab = null; | |
if (!this.props.noPhotoPreviews) ab = p.getThumbnail(this.props.attachments, this.props.attached_story, this.props.feedback_context); | |
var bb = ab && r.snowliftable(za), | |
cb = r.isVaultSetURI(za), | |
db = r.isAlbumDraftRecoveryDialogURI(za), | |
eb = ((this.props.useChevron ? "_55ma" : '') + (' ' + "_55m9")), | |
fb = t.createElement(v, { | |
className: eb, | |
isRead: !!this.props.isRead, | |
onClick: this._markItemReadIfUnreadFromReadButton, | |
readLabel: da._("\u5df2\u95b1\u8b80"), | |
unreadLabel: da._("\u6a19\u793a\u70ba\u5df2\u8b80") | |
}), | |
gb = null; | |
if (this.props.useChevron) { | |
ua = null; | |
var hb = (("_1_0c") + (' ' + "_55m9")), | |
ib = null; | |
if (ia) ib = t.createElement(ea, { | |
onclick: this._onClickCloseButton, | |
"data-gt": xa, | |
ref: "closeButton" | |
}, t.createElement("div", { | |
className: "_3-y-" | |
}, ia.menu_option_title), t.createElement("div", { | |
className: "_3-y_" | |
}, ia.menu_option_text)); | |
var jb = this.props.gnfGiven ? t.createElement(ea, { | |
onclick: this._undoGenericNegative | |
}, t.createElement("div", { | |
className: "_3-y-" | |
}, da._("\u4f60\u5c0d\u9019\u500b\u4e0d\u611f\u8208\u8da3")), t.createElement("div", { | |
className: "_3-y_" | |
}, da._("\u53d6\u6d88"))) : t.createElement(ea, { | |
onclick: this._onClickGenericNegative | |
}, t.createElement("div", { | |
className: "_3-y-" | |
}, da._("\u5c0d\u9019\u500b\u4e0d\u611f\u8208\u8da3\uff1f")), t.createElement("div", { | |
className: "_3-y_" | |
}, da._("\u544a\u8a34\u6211\u5011"))), | |
kb = t.createElement(aa, null, jb, ib); | |
gb = t.createElement(z, { | |
alignh: "right", | |
menu: kb, | |
className: hb, | |
onShow: this._onChevronShow, | |
onHide: this._onChevronHide | |
}, t.createElement("div", { | |
className: "_1_0d" | |
})); | |
} | |
var lb = (bb || cb || db) ? za : this.props.ajaxify_url, | |
mb = null, | |
nb = null, | |
ob = cb ? x.getSyncedTabURI().toString() : za; | |
if (bb) { | |
mb = 'theater'; | |
} else if (db) { | |
mb = 'async-post'; | |
} else if (cb || lb) mb = 'dialog'; | |
var pb = null, | |
qb = this.props.actors[0]; | |
if (qb) pb = { | |
backgroundImage: 'url(' + qb.profile_picture.uri + ')' | |
}; | |
var rb = false; | |
this.props.attachments.forEach(function(tb) { | |
if (rb) return; | |
rb = tb.style_list.indexOf("notification_target") >= 0 || tb.style_list.indexOf("question") >= 0; | |
if (rb) return; | |
}); | |
var sb = t.createElement("div", null, fb, ua, gb); | |
return (t.createElement("li", { | |
className: ka, | |
"data-gt": this.props.tracking, | |
onMouseLeave: va | |
}, t.createElement("div", { | |
className: "anchorContainer" | |
}, t.createElement("a", { | |
href: ob, | |
ajaxify: lb, | |
className: (("_33e") + (this.props.useChevron ? ' ' + "_1_0e" : '')), | |
rel: mb, | |
onClick: nb, | |
onMouseDown: this._markItemRead, | |
onKeyDown: this._onKeyDownItem | |
}, t.createElement(m, null, t.createElement("span", { | |
style: pb, | |
className: ((!this.props.isNotifsPage ? "_33h" : '') + (this.props.isNotifsPage ? ' ' + "_12u1" : '')) | |
}), t.createElement(l, { | |
flex: l.FLEX.left | |
}, t.createElement("div", { | |
className: "_4l_v" | |
}, ta, t.createElement(m, { | |
className: (("_33f") + (this.state.isBizSite ? ' ' + "_2g48" : '')) | |
}, t.createElement("img", { | |
className: "_10cu", | |
src: this.props.icon.uri | |
}), t.createElement("span", null, t.createElement(w, { | |
shorten: this.props.shortenTimestamp, | |
time: this.props.timestamp.time, | |
text: this.props.timestamp.text, | |
verbose: this.props.timestamp.verbose, | |
className: "_33g" | |
})))), this._renderAttachedImage(ab)))), sb))); | |
} | |
}); | |
e.exports = ha; | |
}, null); | |
__d("NotificationJewelList.react", ["Animation", "Event", "LoadingIndicator.react", "NotificationListPropTypes", "NotificationListItem.react", "React", "ScrollableArea.react", "Vector", "cx", "debounce", "fbt", "getObjectValues", "isEmpty"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) { | |
b.__markCompiled && b.__markCompiled(); | |
var t = 160, | |
u = 530, | |
v = 40, | |
w = 64, | |
x = 430, | |
y = l.createClass({ | |
displayName: "NotificationJewelList", | |
propTypes: j, | |
_isLoadingIndicatorVisible: function() { | |
var z = this.refs.loading; | |
if (!z) return false; | |
var aa = l.findDOMNode(this.refs.scrollable), | |
ba = n.getElementDimensions(aa).y; | |
if (ba === 0) return false; | |
var ca = n.getElementPosition(aa).y + ba, | |
da = n.getElementPosition(l.findDOMNode(z)).y; | |
da -= v; | |
return da < ca; | |
}, | |
_calculateHeight: function() { | |
var z = n.getViewportDimensions().y, | |
aa = Math.min(this.props.maxHeight || u, z - t); | |
if (this.props.upsell) return Math.max(aa - w, 0); | |
return aa; | |
}, | |
_keepOnLoading: function() { | |
if (this.isMounted()) this.props.afterScroll(this._isLoadingIndicatorVisible()); | |
}, | |
_renderItems: function() { | |
return r(this.props.notifs).map(function(z) { | |
var aa = z.alert_id; | |
return (l.createElement(k, l.__spread({ | |
key: aa, | |
visible: !this.props.hiddenState[aa], | |
isRead: this.props.readState[aa], | |
gnfGiven: this.props.gnfState[aa], | |
negativeTracking: this.props.negativeTracking, | |
shortenTimestamp: this.props.shortenTimestamp, | |
useChevron: this.props.useChevron, | |
onChevronShow: this.props.onChevronShow, | |
onChevronHide: this.props.onChevronHide, | |
paused: this.props.paused, | |
parent: this | |
}, z))); | |
}.bind(this)); | |
}, | |
componentDidMount: function() { | |
var z = l.findDOMNode(this.refs.scrollable); | |
h.listen(window, 'resize', p(function() { | |
if (!s(this.props.notifs)) new g(z).to('height', this._calculateHeight() + 'px').duration(100).go(); | |
}.bind(this))); | |
}, | |
componentDidUpdate: function(z) { | |
if (this.props.paused && !z.paused) | |
if (this.props.shouldScroll && this.refs.scrollable) this.refs.scrollable.getArea().scrollToTop(false); | |
setTimeout(this._keepOnLoading, 0); | |
}, | |
render: function() { | |
var z = this.props.notifs, | |
aa = null, | |
ba = null, | |
ca = x, | |
da = null; | |
if (!s(z)) { | |
aa = l.createElement("ul", { | |
"data-gt": this.props.tracking | |
}, this._renderItems()); | |
ba = this._calculateHeight(); | |
} else if (!this.props.canFetchMore) aa = l.createElement("div", { | |
className: "_572e" | |
}, q._("\u6c92\u6709\u65b0\u7684\u901a\u77e5")); | |
if (this.props.canFetchMore) da = l.createElement(i, { | |
color: "white", | |
size: "small", | |
ref: "loading", | |
className: "_33i" | |
}); | |
var ea = null; | |
if (this.props.upsell) { | |
var fa = this.props.upsell.module; | |
ea = l.createElement(fa, l.__spread({}, this.props.upsell.props)); | |
} | |
var ga = (("_50-t") + (this.props.showingChevron ? ' ' + "_2iy1" : '')); | |
return (l.createElement("div", { | |
className: ga | |
}, l.createElement(m, { | |
ref: "scrollable", | |
width: ca, | |
height: ba, | |
fade: true, | |
persistent: true, | |
onScroll: p(this._keepOnLoading) | |
}, aa, da), ea)); | |
} | |
}); | |
e.exports = y; | |
}, null); | |
__d("NotificationJewelListController", ["NotificationList.react", "NotificationJewelList.react", "React"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
function j(k, l) { | |
"use strict"; | |
this.$NotificationJewelListController0 = k; | |
this.$NotificationJewelListController1 = l; | |
this.$NotificationJewelListController2 = false; | |
this.$NotificationJewelListController3 = false; | |
this.$NotificationJewelListController4(); | |
} | |
j.prototype.open = function() { | |
"use strict"; | |
this.$NotificationJewelListController2 = true; | |
this.$NotificationJewelListController4(); | |
}; | |
j.prototype.pause = function() { | |
"use strict"; | |
this.$NotificationJewelListController3 = true; | |
this.$NotificationJewelListController4(); | |
}; | |
j.prototype.unpause = function() { | |
"use strict"; | |
this.$NotificationJewelListController3 = false; | |
this.$NotificationJewelListController4(); | |
}; | |
j.prototype.$NotificationJewelListController4 = function() { | |
"use strict"; | |
i.render(i.createElement(g, { | |
hasEverBeenOpened: this.$NotificationJewelListController2, | |
paused: this.$NotificationJewelListController3, | |
tracking: this.$NotificationJewelListController1.tracking, | |
negativeTracking: this.$NotificationJewelListController1.negativeTracking, | |
shortenTimestamp: this.$NotificationJewelListController1.shortenTimestamp, | |
businessID: this.$NotificationJewelListController1.businessID, | |
maxHeight: this.$NotificationJewelListController1.maxHeight, | |
useChevron: this.$NotificationJewelListController1.useChevron, | |
numPerPage: 5, | |
listRenderer: h, | |
upsell: this.$NotificationJewelListController1.upsell || null | |
}), this.$NotificationJewelListController0); | |
}; | |
e.exports = j; | |
}, null); | |
__d("XQuickPromotionSimpleLoggingController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/qp\/action\/log\/", { | |
qp_id: { | |
type: "Int", | |
required: true | |
}, | |
qp_action: { | |
type: "Enum", | |
enumType: 1 | |
}, | |
qp_instance_log_data: { | |
type: "StringToStringMap", | |
defaultValue: {} | |
}, | |
qp_event: { | |
type: "String" | |
} | |
}); | |
}, null); | |
__d("QPRenderer", ["$", "CSS", "XQuickPromotionSimpleLoggingController", "AsyncSignal"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = function(p, event, q) { | |
var r = i.getURIBuilder().setInt('qp_id', p).setString('qp_event', event).setStringToStringMap('qp_instance_log_data', q).getURI(); | |
new j(r, {}).send(); | |
}, | |
l = function(p, q, r) { | |
var s = i.getURIBuilder().setInt('qp_id', p).setEnum('qp_action', q).setStringToStringMap('qp_instance_log_data', r).getURI(); | |
new j(s, {}).send(); | |
}, | |
m = function(p, q, r, s, t, u) { | |
o(p, r, g(s), u, function() { | |
if (t) h.hide(q); | |
}); | |
}, | |
n = function(p, q, r) { | |
q.show(); | |
k(p, 'view', {}); | |
q.subscribe('cancel', function() { | |
k(p, 'dialog_cancel', {}); | |
}); | |
for (var s = 0; s < r.length; s++) { | |
var t = r[s], | |
u = g(t.element_id); | |
o(p, t.action, u, t.instance_log_data, function() { | |
if (t.should_close) q.hide(); | |
}); | |
if (t.action == 'primary') u.focus(); | |
} | |
}, | |
o = function(p, q, r, s, t) { | |
r.addEventListener('click', function() { | |
var u = i.getURIBuilder().setInt('qp_id', p).setEnum('qp_action', q).setStringToStringMap('qp_instance_log_data', s).getURI(); | |
new j(u, {}).send(); | |
t(); | |
}); | |
}; | |
f.setAction = m; | |
f.setDialogActionsAndShow = n; | |
f.logAction = l; | |
f.logEvent = k; | |
}, null); | |
__d("ContextualHelpSearchController", ["Event", "AsyncRequest", "DOM", "CSS", "Focus", "Input"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = 400; | |
function n() { | |
this._token = null; | |
this._timerID = 0; | |
this._lastQuery = null; | |
this.typing_listener = null; | |
this.clear_listener = null; | |
this.async_request = null; | |
} | |
Object.assign(n.prototype, { | |
init: function(o, p, q, r, s, t) { | |
this.loader = o; | |
this.search_box = p; | |
this.topics_area = q; | |
this.results_area = r; | |
this.clear_button = s; | |
this.typing_listener = g.listen(this.search_box, 'keyup', this.setTimer.bind(this)); | |
this.clear_listener = g.listen(this.clear_button, 'click', this.clearResults.bind(this)); | |
if (t == null || t.focusSearchBox == null || t.focusSearchBox) k.set(this.search_box); | |
}, | |
source: 'contextual_help', | |
clearResults: function() { | |
this.show(this.topics_area); | |
this._lastQuery = ''; | |
l.reset(this.search_box); | |
k.set(this.search_box); | |
if (this.async_request !== null) { | |
this.async_request.abort(); | |
this.async_request = null; | |
} | |
j.addClass(this.clear_button, 'hidden_elem'); | |
}, | |
update: function() { | |
var o = l.getValue(this.search_box); | |
if (o === this._lastQuery) return; | |
this._lastQuery = o; | |
if (o === '') { | |
this.clearResults(); | |
return; | |
} | |
this.show(this.loader); | |
var p = { | |
query: o, | |
width: this._width || m, | |
source: this.source | |
}; | |
this.async_request = new h('/help/ajax/search/').setData(p).setHandler(function(q) { | |
this._update(q); | |
}.bind(this)); | |
this.async_request.send(); | |
}, | |
_update: function(o) { | |
this.async_request = null; | |
var p = o.getPayload().results; | |
i.setContent(this.results_area, p); | |
this.show(this.results_area); | |
if (l.getValue(this.search_box) === '') { | |
this.clearResults(); | |
} else j.removeClass(this.clear_button, 'hidden_elem'); | |
}, | |
setTimer: function() { | |
if (this._timerID !== 0) clearTimeout(this._timerID); | |
this._timerID = setTimeout(this.update.bind(this), 300); | |
if (this.async_request != null) { | |
this.async_request.abort(); | |
this.async_request = null; | |
} | |
}, | |
show: function(o) { | |
var p = [this.loader, this.topics_area, this.results_area]; | |
for (var q = 0; q < p.length; q++) j.addClass(p[q], 'hidden_elem'); | |
j.removeClass(o, 'hidden_elem'); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("JewelQPLogging", ["QPRenderer"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = false, | |
i = null, | |
j = false; | |
function k() { | |
if (j) return; | |
if (h && i) { | |
g.logEvent(i.promotion_id, 'view', i.instance_log_data ? i.instance_log_data : {}); | |
j = true; | |
} | |
} | |
var l = { | |
onJewelOpened: function() { | |
h = true; | |
k(); | |
}, | |
updateQPLogData: function(m) { | |
i = m; | |
k(); | |
} | |
}; | |
e.exports = l; | |
}, null); | |
__d("RequestsJewel", ["Animation", "AccessibilityLogger", "Arbiter", "AsyncRequest", "AsyncSignal", "ChannelConstants", "CSS", "DOM", "Event", "LinkController", "Parent", "ScrollableArea", "Vector", "$", "debounce", "ge", "shield", "fbt", "JewelQPLogging", "requireWeak"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) { | |
b.__markCompiled && b.__markCompiled(); | |
var aa = null; | |
z('FriendBrowserCheckboxController', function(fa) { | |
return aa = fa; | |
}); | |
var ba = 530, | |
ca = 30, | |
da = 160; | |
Object.assign(ea, { | |
instance: null, | |
getInstance: function() { | |
return ea.instance; | |
}, | |
replaceJewelTitle: function(fa, ga) { | |
n.setContent(t(fa), ga); | |
}, | |
updateFromDOM: function() { | |
if (ea.instance) ea.instance.fromDom(); | |
}, | |
setInitialHeight: function() { | |
if (ea.instance) ea.instance.setHeight(); | |
}, | |
maybeLoadJewel: function() { | |
if (ea.instance) ea.instance.maybeLoadJewel(); | |
} | |
}); | |
function ea(fa, ga, ha) { | |
"use strict"; | |
ea.instance = this; | |
this.countNew = 0; | |
this.jewel = fa; | |
this.jewelFlyoutCase = fa.getRoot(); | |
this.jewelFlyout = v('fbRequestsFlyout'); | |
this.newCountSpan = v('newRequestCount'); | |
this.folder = ga; | |
this.doNewMarkRead = ha; | |
this.openTimestamp = 0; | |
this.$RequestsJewel0 = {}; | |
this.$RequestsJewel1 = 0; | |
this.shouldClearPredictionAssocOnClick = false; | |
var ia = v('requestsMarkReadButton'); | |
if (ia) o.listen(ia, 'click', w(this.$RequestsJewel2, this)); | |
this.jewel.subscribe('marked-seen', w(this.$RequestsJewel3, this)); | |
this.jewel.subscribe('closed', w(this.$RequestsJewel4, this)); | |
this.jewel.subscribe('updated', this.$RequestsJewel5.bind(this)); | |
this.jewel.subscribe('opened', this.$RequestsJewel6.bind(this)); | |
p.registerHandler(this.$RequestsJewel7.bind(this)); | |
i.subscribe(l.getArbiterType('jewel_requests_add'), this.$RequestsJewel8.bind(this)); | |
i.subscribe(l.getArbiterType('jewel_friending_notifs'), this.$RequestsJewel9.bind(this)); | |
i.subscribe(l.getArbiterType('jewel_requests_remove_old'), this.$RequestsJewela.bind(this)); | |
i.subscribe(l.getArbiterType('friend_requests_seen'), this.$RequestsJewelb.bind(this)); | |
o.listen(this.jewelFlyout, 'submit', function(ka) { | |
var la = q.byClass(ka.getTarget(), 'objectListItem'); | |
if (la) { | |
m.removeClass(la, 'jewelItemNew'); | |
m.addClass(la, 'jewelItemResponded'); | |
} | |
}.bind(this)); | |
var ja = n.find(v('fbRequestsJewel'), 'a[rel="toggle"]'); | |
o.listen(ja, 'focus', function(ka) { | |
h.logFocusIn(); | |
}.bind(this)); | |
this.setupScroll(); | |
o.listen(window, 'resize', u(function() { | |
this.$RequestsJewelc(); | |
}.bind(this))); | |
} | |
ea.prototype.setupScroll = function() { | |
"use strict"; | |
var fa = n.scry(this.jewelFlyout, '.uiScrollableAreaWrap')[0]; | |
if (fa) { | |
this.$RequestsJeweld = fa; | |
this.$RequestsJewele = 0; | |
this.$RequestsJewelf = o.listen(fa, 'scroll', this.$RequestsJewelg.bind(this), o.Priority.$RequestsJewelh); | |
} | |
}; | |
ea.prototype.fromDom = function() { | |
"use strict"; | |
n.scry(this.jewelFlyout, '.jewelItemList li.objectListItem').forEach(function(fa) { | |
var ga = fa.getAttribute('id'); | |
if (ga) { | |
var ha = v(ga + '_status'), | |
ia = this.$RequestsJeweli(ga); | |
if (ia.requester) this.$RequestsJewel0[ia.requester] = ga; | |
++this.$RequestsJewel1; | |
} | |
}.bind(this)); | |
this.$RequestsJewelj(); | |
}; | |
ea.prototype.$RequestsJewelk = function(fa) { | |
"use strict"; | |
var ga = fa.match(/^(\d+)_(\d+)/); | |
return (ga) ? { | |
requester: ga[1], | |
type: ga[2] | |
} : (void 0); | |
}; | |
ea.prototype.$RequestsJeweli = function(fa) { | |
"use strict"; | |
var ga = fa ? this.$RequestsJewelk(fa) : (void 0), | |
ha; | |
if (ga && ga.requester) { | |
ha = parseInt(ga.requester, 10); | |
if (isNaN(ha)) ha = (void 0); | |
} | |
var ia; | |
if (ga && ga.type) { | |
ia = parseInt(ga.type, 10); | |
if (isNaN(ia)) ia = (void 0); | |
} | |
return { | |
requester: ha, | |
type: ia | |
}; | |
}; | |
ea.prototype.$RequestsJewell = function() { | |
"use strict"; | |
if (this.countNew > 0) this.countNew -= 1; | |
}; | |
ea.prototype.$RequestsJewel7 = function(fa, event) { | |
"use strict"; | |
var ga = q.byClass(fa, 'jewelItemNew'); | |
if (ga && q.byClass(ga, 'fbRequestList') && q.byClass(ga, 'beeperEnabled')) { | |
var ha = this.$RequestsJewelk(ga.id); | |
ha && this.$RequestsJewel3(ha.requester, ha.type); | |
this.$RequestsJewell(); | |
i.inform('jewel/count-updated', { | |
jewel: 'requests', | |
count: this.countNew | |
}); | |
m.removeClass(ga, 'jewelItemNew'); | |
} | |
return true; | |
}; | |
ea.prototype.$RequestsJewelm = function() { | |
"use strict"; | |
return n.scry(this.jewelFlyout, '.uiScrollableArea')[0]; | |
}; | |
ea.prototype.$RequestsJewelg = function() { | |
"use strict"; | |
var fa = n.scry(this.$RequestsJeweld, '.uiMorePager'); | |
if (!fa) return; | |
var ga = fa.pop(); | |
if (ga) { | |
var ha = s.getElementPosition(ga, 'viewport').y; | |
if (ha > 0) m.addClass(q.byClass(this.$RequestsJeweld, 'uiScrollableArea'), 'contentAfter'); | |
var ia = n.find(ga, 'a'); | |
if (!ia) return; | |
var ja = s.getElementPosition(ia, 'viewport').y; | |
if (ja == this.$RequestsJewele) return; | |
var ka = s.getElementPosition(this.$RequestsJeweld, 'viewport').y + s.getElementDimensions(this.$RequestsJeweld).y; | |
if (ja - 300 < ka && ja > 0) { | |
this.$RequestsJewele = ja; | |
var la = ia.getAttribute('ajaxify'); | |
if (la) { | |
new j(la).setRelativeTo(ia).setStatusElement(q.byClass(ia, 'stat_elem')).send(); | |
} else aa && aa.getInstance('jewel').showMore(); | |
} | |
} | |
}; | |
ea.prototype.$RequestsJewel9 = function(fa, ga) { | |
"use strict"; | |
if (!ga || this.jewel.isOpen()) return; | |
if (ga.obj.notif_type !== 'friend_confirmed') return; | |
if (v('fbRequestsJewelLoading')) { | |
new j().setURI('/ajax/requests/loader/').send(); | |
return; | |
} | |
var ha = {}; | |
ha.reloadcontent = true; | |
new j().setURI('/ajax/requests/loader/').setData(ha).send(); | |
}; | |
ea.prototype.$RequestsJewel8 = function(fa, ga) { | |
"use strict"; | |
if (!ga) return; | |
var ha = ga.obj.from, | |
ia = ga.obj.suggester, | |
ja = this.$RequestsJeweli(this.$RequestsJewel0[ha]).type, | |
ka = ja === 19 && !ia; | |
if (!ka && (ja || this.jewel.isOpen())) return; | |
if (v('fbRequestsJewelLoading')) { | |
new j().setURI('/ajax/requests/loader/').send(); | |
} else { | |
var la = {}; | |
la.reloadcontent = true; | |
new j().setURI('/ajax/requests/loader/').setData(la).send(); | |
} | |
}; | |
ea.prototype.$RequestsJewela = function(fa, ga) { | |
"use strict"; | |
if (!ga || this.jewel.isOpen() || v('fbRequestsJewelLoading') !== null) return; | |
var ha = this.$RequestsJewel0[ga.obj.from], | |
ia = ha && v(ha); | |
if (ia) { | |
if (m.hasClass(ia, 'jewelItemNew')) { | |
this.$RequestsJewell(); | |
i.inform('jewel/count-updated', { | |
jewel: 'requests', | |
count: this.countNew | |
}); | |
} | |
if (!m.hasClass(ia, 'jewelItemResponded')) { | |
n.remove(ia); | |
delete this.$RequestsJewel0[ga.obj.from]; | |
--this.$RequestsJewel1; | |
this.$RequestsJewelj(); | |
} | |
} | |
}; | |
ea.prototype.$RequestsJewel2 = function() { | |
"use strict"; | |
this.jewel.markSeen(); | |
this.$RequestsJewelo(); | |
}; | |
ea.prototype.$RequestsJewel3 = function(fa, ga) { | |
"use strict"; | |
var ha = n.scry(this.jewelFlyout, 'li'); | |
new k('/ajax/gigaboxx/endpoint/UpdateLastSeenTime.php', { | |
folder: this.folder, | |
first_item: ha[0].id | |
}).send(); | |
var ia = typeof fa != 'undefined' && typeof ga != 'undefined' ? { | |
requester: fa, | |
type: ga | |
} : {}; | |
this.doNewMarkRead && new k('/ajax/requests/mark_read/', ia).send(); | |
}; | |
ea.prototype.$RequestsJewelb = function(fa, ga) { | |
"use strict"; | |
i.inform('jewel/count-updated', { | |
jewel: 'requests', | |
count: 0 | |
}); | |
}; | |
ea.prototype.$RequestsJewelo = function(fa, ga) { | |
"use strict"; | |
n.scry(this.jewel.root, 'li.jewelItemNew').forEach(function(ha) { | |
m.removeClass(ha, 'jewelItemNew'); | |
}); | |
}; | |
ea.prototype.$RequestsJewel5 = function(fa, ga) { | |
"use strict"; | |
this.countNew = ga.count; | |
m.conditionClass(this.jewelFlyout, 'beeperUnread', this.countNew > 0); | |
m.conditionClass(this.jewelFlyoutCase, 'showRequests', this.countNew > 0); | |
if (this.newCountSpan) { | |
var ha = this.countNew == 1 ? x._("{num}\u500b\u65b0\u8981\u6c42", [x.param("num", this.countNew)]) : x._({ | |
"*": "{num}\u500b\u65b0\u7684\u8acb\u6c42" | |
}, [x.param("num", this.countNew, [0])]); | |
n.setContent(this.newCountSpan, ha); | |
} | |
}; | |
ea.prototype.$RequestsJewelj = function() { | |
"use strict"; | |
n.scry(this.jewelFlyout, 'li.empty').forEach(function(fa) { | |
m.conditionShow(fa, this.$RequestsJewel1 <= 0); | |
}.bind(this)); | |
}; | |
ea.prototype.$RequestsJewel6 = function() { | |
"use strict"; | |
i.inform('requestsJewel/opened'); | |
var fa = v('fbRequestsJewelLoading'), | |
ga = this.$RequestsJewelm(); | |
if (!fa && !ga) { | |
this.unhandledRequest = true; | |
} else if (fa) { | |
var ha = Date.now(); | |
if (this.openTimestamp + 5000 < ha) { | |
this.openTimestamp = ha; | |
new j().setURI('/ajax/requests/loader/').setData({ | |
log_impressions: true | |
}).send(); | |
} | |
} else { | |
var ia = Object.keys(this.$RequestsJewel0); | |
if (ia.length > 0) new j().setURI('/friends/requests/log_impressions').setData({ | |
ids: ia.join(','), | |
ref: 'jewel' | |
}).send(); | |
} | |
ga && r.poke(ga); | |
y.onJewelOpened(); | |
}; | |
ea.prototype.$RequestsJewel4 = function() { | |
"use strict"; | |
i.inform('requestsJewel/closed'); | |
this.$RequestsJewelo(); | |
}; | |
ea.prototype.$RequestsJewelp = function() { | |
"use strict"; | |
return Math.min(Math.max(s.getViewportDimensions().y - da, ca), ba); | |
}; | |
ea.prototype.$RequestsJewelc = function() { | |
"use strict"; | |
if (this.$RequestsJewelm()) new g(this.$RequestsJewelm()).to('height', this.$RequestsJewelp() + 'px').duration(100).go(); | |
}; | |
ea.prototype.setHeight = function() { | |
"use strict"; | |
this.$RequestsJewelm().style.height = this.$RequestsJewelp() + 'px'; | |
}; | |
ea.prototype.maybeLoadJewel = function() { | |
"use strict"; | |
if (this.unhandledRequest) { | |
this.unhandledRequest = false; | |
this.$RequestsJewel6(); | |
} | |
}; | |
e.exports = ea; | |
}, null); | |
__d("JewelX", ["Event", "Arbiter", "ArbiterMixin", "CSS", "DOM", "HTML", "Keys", "TabIsolation", "Toggler", "Run", "csx", "emptyFunction", "reportData"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) { | |
b.__markCompiled && b.__markCompiled(); | |
var t = function(u, v) { | |
u && v && this.init(u, v); | |
}; | |
Object.assign(t, { | |
_instancesByName: {} | |
}); | |
Object.assign(t.prototype, i, { | |
init: function(u, v) { | |
this.name = v.name; | |
this.root = u; | |
this.badge = v.badge; | |
this.countNew = 0; | |
this.initialCount = 0; | |
this.escHandler = null; | |
this.bootload_module = v.bootload_module; | |
this.bootload_args = v.bootload_args; | |
this.bootload_done = false; | |
this.togglerInstance = o.createInstance(u).setSticky(false); | |
p.onAfterLoad(function() { | |
return this._setupBootload(); | |
}.bind(this)); | |
if (v.keepOpenForSnowlift) this.togglerInstance.setPrePageTransitionCallback(this._onPrePageTransition.bind(this)); | |
t._instancesByName[this.name] = this; | |
var w = this.getFlyout(), | |
x = new n(w); | |
o.createInstance(w).setSticky(false); | |
o.listen('show', this.root, function(y) { | |
this._logFirstClick(); | |
this.hasNew() && this.markSeen(); | |
this.reset(); | |
this.inform('opened'); | |
h.inform('layer_shown', { | |
type: 'Jewel' | |
}); | |
x.enable(); | |
this.setupEvents(); | |
this._setupBootload(); | |
}.bind(this)); | |
o.listen('hide', this.root, function(y, z) { | |
this.hasNew() && this.markSeen(); | |
this.reset(); | |
this.inform('closed'); | |
h.inform('layer_hidden', { | |
type: 'Jewel' | |
}); | |
x.disable(); | |
this.removeEvents(); | |
}.bind(this)); | |
h.subscribe('jewel/count-updated', function(y, z) { | |
z.jewel == this.name && this.update(z); | |
}.bind(this)); | |
h.subscribe('jewel/focus', function(y, z) { | |
if (this.isOpen()) o.hide(this.root); | |
}.bind(this)); | |
}, | |
getRoot: function() { | |
return this.root; | |
}, | |
getFlyout: function() { | |
if (typeof this._flyout === 'undefined') this._flyout = k.find(this.root, ".__tw"); | |
return this._flyout; | |
}, | |
hasNew: function() { | |
return j.hasClass(this.root, 'hasNew'); | |
}, | |
isOpen: function() { | |
return j.hasClass(this.root, 'openToggler'); | |
}, | |
reset: function() { | |
j.removeClass(this.root, 'hasNew'); | |
}, | |
setContent: function(u) { | |
var v = k.find(this.root, 'ul.jewelItemList'); | |
k.setContent(v, l(u)); | |
}, | |
update: function(u) { | |
this.countNew = u.count; | |
if (typeof this.countNew === 'number' && this.countNew < 0) this.countNew = 0; | |
this.badge.setLegacyContent(this.countNew); | |
var v = isNaN(this.countNew) || this.countNew > 0; | |
j.conditionClass(this.root, 'hasNew', v); | |
this.inform('updated', u); | |
}, | |
setupEvents: function() { | |
this.escHandler = g.listen(document.documentElement, 'keydown', function(u) { | |
if (u.keyCode === m.ESC && this.isOpen()) o.hide(this.root); | |
}.bind(this)); | |
}, | |
removeEvents: function() { | |
if (this.escHandler) { | |
this.escHandler.remove(); | |
this.escHandler = null; | |
} | |
}, | |
markSeen: function() { | |
h.inform('jewel/count-updated', { | |
jewel: this.name, | |
count: 0 | |
}, h.BEHAVIOR_STATE); | |
this.inform('marked-seen'); | |
}, | |
_onPrePageTransition: function(u, v) { | |
if (!this._isSnowliftURI(v.from) && !this._isSnowliftURI(v.to)) this.togglerInstance && this.togglerInstance.hide(); | |
}, | |
_isSnowliftURI: function(u) { | |
return u && u.getQueryData().hasOwnProperty('theater'); | |
}, | |
_logFirstClick: function() { | |
this._logFirstClick = r; | |
s('jewel_click', { | |
gt: { | |
count: this.countNew, | |
initial: this.initialCount, | |
jewel: this.name | |
} | |
}); | |
}, | |
_setupBootload: function() { | |
if (this.bootload_done || !this.bootload_module) return; | |
this.bootload_done = true; | |
this.bootload_module.load().then(function(u) { | |
return new u(this, this.bootload_args); | |
}.bind(this)); | |
} | |
}); | |
e.exports = t; | |
}, null); | |
__d("LitestandNewsfeedCountUpdater", ["Arbiter", "AsyncRequest", "LitestandMessages", "NavigationMessage", "WildWildWestJSGating", "emptyFunction"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m, n, o = 0; | |
function p() { | |
n && clearTimeout(n); | |
if (m) return; | |
var t = k.badge_update_time; | |
n = setTimeout(q, t); | |
} | |
function q() { | |
if (m) return; | |
new h().setURI('/ajax/litestand/newsfeed_count').setHandler(function(t) { | |
if (m) return; | |
r(t.getPayload()); | |
p(); | |
}).setAllowCrossPageTransition(true).send(); | |
} | |
function r(t) { | |
g.inform(i.UPDATE_HOME_COUNT, { | |
count: t, | |
onHome: m | |
}, g.BEHAVIOR_STATE); | |
if (k.show_badge_bk) { | |
g.inform(j.NAVIGATION_COUNT_UPDATE, { | |
key: 'nf', | |
count: m ? 0 : t - o | |
}); | |
o = t; | |
} | |
} | |
var s = { | |
init: function() { | |
s.init = l; | |
g.subscribe(i.NEWSFEED_LOAD, function() { | |
m = true; | |
r(0); | |
}); | |
g.subscribe(i.LEAVE_HOME, function() { | |
m = false; | |
p(); | |
}); | |
p(); | |
} | |
}; | |
e.exports = s; | |
}, null); | |
__d("LitestandChromeHomeCount", ["Arbiter", "CSS", "DOM", "Event", "LitestandMessages", "LitestandNewsfeedCountUpdater", "Parent", "UserAgent_DEPRECATED", "csx", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q = 20, | |
r, s, t, u, v, w = { | |
init: function(x) { | |
v = x; | |
s = i.find(document, "div._uaw ._5ahz"); | |
r = s.parentNode; | |
t = m.byClass(r, "_1ayn"); | |
u = false; | |
g.subscribe(k.UPDATE_HOME_COUNT, function(y, z) { | |
w.updateBadge(z.onHome ? 0 : z.count); | |
}); | |
j.listen(t, 'click', function(event) { | |
var y = event.getModifiers(); | |
if (y.shift || (n.osx() && y.meta) || (n.windows() && y.control)) w.updateBadge(0); | |
}); | |
l.init(); | |
w.updateBadge(v); | |
}, | |
updateBadge: function(x) { | |
v = x; | |
var y = x > 0; | |
w.toggleBadge(y); | |
if (y) { | |
var z = x > q ? q + '+' : x; | |
i.setContent(s, z); | |
} | |
}, | |
toggleBadge: function(x) { | |
if (u === x) return; | |
u = x; | |
h.conditionClass(r, "_5ahy", !x); | |
} | |
}; | |
e.exports = w; | |
}, null); | |
__d("MercuryJewelModuleLoader", ["JSResource"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = g('MercuryJewel'); | |
}, null); | |
__d("RenderManager", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
function g(h) { | |
"use strict"; | |
this._isDirty = false; | |
this._obj = h; | |
} | |
g.prototype.dirty = function() { | |
"use strict"; | |
if (!this._isDirty) { | |
this._isDirty = true; | |
setTimeout(this._doPaint.bind(this), 0); | |
} | |
}; | |
g.prototype._doPaint = function() { | |
"use strict"; | |
this._isDirty = false; | |
this._obj.paint(); | |
}; | |
e.exports = g; | |
}, null); | |
__d("CounterDisplay", ["Arbiter", "CSS", "DOM", "RenderManager", "Run", "$", "removeFromArray"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
function n(o, p, q, r, s, t) { | |
Object.assign(this, { | |
_name: o, | |
_valueNode: l(p), | |
_wrapperNode: l(q) || null, | |
_statusClass: s, | |
_rm: new j(this), | |
_arbiterSubscription: null, | |
_count: 0 | |
}); | |
var u = this._valueNode.firstChild; | |
if (u) { | |
var v = parseInt(u.nodeValue, 10); | |
if (!isNaN(v)) this._count = v; | |
} | |
this._statusNode = r ? l(r) : null; | |
this._subscribeAll(); | |
n.instances.push(this); | |
if (!t) k.onLeave(this._destroy.bind(this), true); | |
} | |
Object.assign(n, { | |
EVENT_TYPE_ADJUST: 'CounterDisplay/adjust', | |
EVENT_TYPE_UPDATE: 'CounterDisplay/update', | |
instances: [], | |
adjustCount: function(o, p) { | |
g.inform(n.EVENT_TYPE_ADJUST + '/' + o, p); | |
}, | |
setCount: function(o, p) { | |
g.inform(n.EVENT_TYPE_UPDATE + '/' + o, p); | |
} | |
}); | |
Object.assign(n.prototype, { | |
_destroy: function() { | |
delete this._valueNode; | |
delete this._wrapperNode; | |
if (this._arbiterSubscription) { | |
this._arbiterSubscription.unsubscribe(); | |
delete this._arbiterSubscription; | |
} | |
m(n.instances, this); | |
}, | |
adjustCount: function(o) { | |
this._count = Math.max(0, this._count + o); | |
this._rm.dirty(); | |
return this; | |
}, | |
setCount: function(o) { | |
this._count = Math.max(0, o); | |
this._rm.dirty(); | |
return this; | |
}, | |
paint: function() { | |
i.setContent(this._valueNode, this._count); | |
this._toggleNodes(); | |
}, | |
_toggleNodes: function() { | |
if (this._wrapperNode) h.conditionClass(this._wrapperNode, 'hidden_elem', this._count <= 0); | |
if (this._statusClass && this._statusNode) h.conditionClass(this._statusNode, this._statusClass, this._count > 0); | |
}, | |
_subscribeAll: function() { | |
var o = [n.EVENT_TYPE_ADJUST + '/' + this._name, n.EVENT_TYPE_UPDATE + '/' + this._name]; | |
this._arbiterSubscription = g.subscribe(o, this._onInform.bind(this), g.SUBSCRIBE_NEW); | |
}, | |
_onInform: function(o, p) { | |
p = parseInt(p); | |
if (isNaN(p)) return; | |
if (o.indexOf(n.EVENT_TYPE_ADJUST) != -1) { | |
this.adjustCount(p); | |
} else if (o.indexOf(n.EVENT_TYPE_UPDATE) != -1) { | |
this.setCount(p); | |
} else return; | |
return; | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("MessagingEvents", ["Arbiter", "ChannelConstants", "arrayContains", "isEmpty"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = {}, | |
l = new g(); | |
function m(n) { | |
if (!j(k)) return; | |
for (var o in n) l.inform('count/' + o, n[o]); | |
} | |
l.subscribe('mark-as-read', function(n, o) { | |
(o.tids || o.chat_ids || []).forEach(function(p) { | |
p = '' + p; | |
if (!(p in k)) { | |
k[p] = true; | |
var q = function() { | |
l.unsubscribe(r); | |
clearTimeout(s); | |
delete k[p]; | |
}, | |
r = l.subscribe('read', function(t, u) { | |
if (i((u.tids || []), p) || i((u.chat_ids || []), p)) q(); | |
}), | |
s = setTimeout(q, 60000); | |
} | |
}); | |
}); | |
g.subscribe(h.getArbiterType('messaging'), function(n, o) { | |
var p = Object.assign({}, o.obj), | |
event = p.event || ''; | |
delete p.type; | |
delete p.event; | |
l.inform(event, p); | |
if ('unread_counts' in p) { | |
var q = p.unread_counts; | |
m({ | |
unread: q.inbox, | |
other_unseen: q.other | |
}); | |
} | |
}); | |
g.subscribe(h.getArbiterType('inbox'), function(n, o) { | |
var p = Object.assign({}, o.obj); | |
delete p.type; | |
m(p); | |
}); | |
a.MessagingEvents = e.exports = l; | |
}, 3); | |
__d("TitanLeftNav", ["CounterDisplay", "MessagingEvents"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = { | |
initialize: function() { | |
h.subscribe('count/other_unseen', function(j, k) { | |
g.setCount('other_unseen', k); | |
}); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("AccessibilityShortcut", ["AccessibilityLogger", "Event", "Focus", "ge", "onEnclosingPageletDestroy", "warning"], function(a, b, c, d, e, f, g, h, i, j, k, l) { | |
b.__markCompiled && b.__markCompiled(); | |
var m = { | |
init: function(n, o) { | |
var p = h.listen(n, 'click', function(q) { | |
q.preventDefault(); | |
var r = j(o); | |
if (r) { | |
i.set(r); | |
g.logSRKey(); | |
} else l(r, 'Failed to set focus on element with ID: %s', o); | |
}); | |
k(n, function() { | |
return p.remove(); | |
}); | |
} | |
}; | |
e.exports = m; | |
}, null); | |
__d("NotificationJewelReminder", ["Arbiter", "ContextualDialog", "ContextualDialogXUITheme", "DOM", "Event", "ImageBlock.react", "LayerFadeOnHide", "LayerFadeOnShow", "NotificationStore", "NotificationUpdates", "React", "SubscriptionsHandler", "Toggler", "$", "cx", "fbt", "intlList"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) { | |
b.__markCompiled && b.__markCompiled(); | |
var x = 2, | |
y = "fbRequestsJewel", | |
z = "fbNotificationsJewel"; | |
function aa(ba) { | |
"use strict"; | |
this.$NotificationJewelReminder0 = ba; | |
if (ba.request.count > 0 && ba.show_request) { | |
this.$NotificationJewelReminder1(y); | |
} else this.$NotificationJewelReminder2(); | |
} | |
aa.prototype.$NotificationJewelReminder2 = function() { | |
"use strict"; | |
if (!this.$NotificationJewelReminder0.show_notif) { | |
return; | |
} else { | |
this.$NotificationJewelReminder3(); | |
return; | |
} | |
}; | |
aa.prototype.$NotificationJewelReminder3 = function() { | |
"use strict"; | |
this.$NotificationJewelReminder4 = p.subscribe('update-notifications', function(ba, ca) { | |
if (ca.nodes) this.$NotificationJewelReminder6(ca.nodes); | |
}.bind(this)); | |
o.getNotifications(Number.isInteger(this.$NotificationJewelReminder0.show_notif) ? this.$NotificationJewelReminder0.show_notif : 0, this.$NotificationJewelReminder6.bind(this)); | |
}; | |
aa.prototype.$NotificationJewelReminder6 = function(ba) { | |
"use strict"; | |
if (this.$NotificationJewelReminder4) { | |
this.$NotificationJewelReminder4.unsubscribe(); | |
this.$NotificationJewelReminder4 = null; | |
} | |
var ca = s.getInstance(t(z)); | |
if (ca && ca.isShown()) return; | |
var da = [], | |
ea, fa = Object.keys(ba); | |
for (var ga = 0; ga < fa.length; ga++) { | |
if (!ba[fa[ga]].showBeep) continue; | |
var ha = ba[fa[ga]].actors; | |
if (ha.length === 0) continue; | |
for (var ia = 0; ia < ha.length; ia++) { | |
ea = ea || ha[ia].profile_picture.uri; | |
if (da.length < x && ha[ia].name && da.indexOf(ha[ia].name) === -1) da.push(ha[ia].name); | |
} | |
if (da.length === x) break; | |
} | |
if (da.length === 0 || !ea) return; | |
var ja = this.$NotificationJewelReminder7(ea, da, fa.length, z); | |
this.$NotificationJewelReminder8(ja); | |
}; | |
aa.prototype.$NotificationJewelReminder7 = function(ba, ca, da, ea) { | |
"use strict"; | |
var fa = q.createElement("div", { | |
className: "_5bov" | |
}, q.createElement(l, null, q.createElement("img", { | |
className: "_5bow", | |
src: ba | |
}), q.createElement("div", null, this.$NotificationJewelReminder9(da, ca, ea)))), | |
ga = j.create('div'); | |
q.render(fa, ga); | |
var ha = new h({ | |
alignment: 'right', | |
contextSelector: '#' + ea + ' a.jewelButton', | |
offsetY: -10, | |
position: 'below', | |
theme: i, | |
width: 210 | |
}, ga); | |
ha.enableBehaviors([n, m]); | |
return ha; | |
}; | |
aa.prototype.$NotificationJewelReminder9 = function(ba, ca, da) { | |
"use strict"; | |
ca = ca.map(function(ea) { | |
return q.createElement("b", null, ea); | |
}); | |
if (da === z) { | |
return (v._({ | |
"*": { | |
"notifications": "{notification senders}\u7684{number}\u5247\u901a\u77e5", | |
"notification": "\u4f86\u81ea{notification senders}\u7684{number}\u5247\u901a\u77e5" | |
} | |
}, [v.param("number", ba, [0]), v['enum'](ba > 1 ? 'notifications' : 'notification', { | |
notifications: "notifications", | |
notification: "notification" | |
}), v.param("notification senders", w(ca))])); | |
} else return (v._({ | |
"*": { | |
"requests": "{number}\u500b\u4f86\u81ea{request senders}\u7684\u4ea4\u53cb\u9080\u8acb", | |
"request": "{number}\u500b\u4f86\u81ea{request senders}\u7684\u4ea4\u53cb\u9080\u8acb" | |
} | |
}, [v.param("number", ba, [0]), v['enum'](ba > 1 ? 'requests' : 'request', { | |
requests: "requests", | |
request: "request" | |
}), v.param("request senders", w(ca))])); | |
}; | |
aa.prototype.$NotificationJewelReminder8 = function(ba) { | |
"use strict"; | |
ba.show(); | |
this.$NotificationJewelRemindera = ba; | |
var ca = ba.getRoot(); | |
this.$NotificationJewelReminderb = setTimeout(this.$NotificationJewelReminderc.bind(this), this.$NotificationJewelReminder0.show_time); | |
this.$NotificationJewelReminderd = new r(); | |
this.$NotificationJewelReminderd.addSubscriptions(g.subscribe('layer_shown', function(da, ea) { | |
if (ea && ea.type === 'Jewel') this.$NotificationJewelReminderc(); | |
}.bind(this)), k.listen(ca, 'mouseenter', function() { | |
clearTimeout(this.$NotificationJewelReminderb); | |
}.bind(this)), k.listen(ca, 'mouseleave', this.$NotificationJewelReminderc.bind(this)), k.listen(ca, 'click', function() { | |
this.$NotificationJewelReminderc(); | |
s.show(t(z)); | |
}.bind(this))); | |
}; | |
aa.prototype.$NotificationJewelReminderc = function() { | |
"use strict"; | |
clearTimeout(this.$NotificationJewelReminderb); | |
this.$NotificationJewelRemindera.hide(); | |
this.$NotificationJewelReminderd.release(); | |
}; | |
aa.prototype.$NotificationJewelReminder1 = function(ba) { | |
"use strict"; | |
if (!this.$NotificationJewelReminder0.show_request || !this.$NotificationJewelReminder0.request.count) return; | |
var ca = s.getInstance(t(ba)); | |
if (ca && ca.isShown()) return; | |
var da = this.$NotificationJewelReminder7(this.$NotificationJewelReminder0.request.pics[0], this.$NotificationJewelReminder0.request.names, this.$NotificationJewelReminder0.request.count, ba); | |
this.$NotificationJewelRemindere(da); | |
}; | |
aa.prototype.$NotificationJewelRemindere = function(ba) { | |
"use strict"; | |
ba.show(); | |
this.$NotificationJewelReminderf = ba; | |
var ca = ba.getRoot(); | |
this.$NotificationJewelReminderg = setTimeout(this.$NotificationJewelReminderh.bind(this), this.$NotificationJewelReminder0.show_time); | |
this.$NotificationJewelReminderi = new r(); | |
this.$NotificationJewelReminderi.addSubscriptions(g.subscribe('layer_shown', function(da, ea) { | |
if (ea && ea.type === 'Jewel') this.$NotificationJewelReminderh(); | |
}.bind(this)), k.listen(ca, 'mouseenter', function() { | |
clearTimeout(this.$NotificationJewelReminderg); | |
}.bind(this)), k.listen(ca, 'mouseleave', this.$NotificationJewelReminderh.bind(this)), k.listen(ca, 'click', function() { | |
this.$NotificationJewelReminderh(); | |
s.show(t(y)); | |
}.bind(this))); | |
}; | |
aa.prototype.$NotificationJewelReminderh = function() { | |
"use strict"; | |
clearTimeout(this.$NotificationJewelReminderg); | |
this.$NotificationJewelReminderf.hide(); | |
this.$NotificationJewelReminderi.release(); | |
this.$NotificationJewelReminder2(); | |
}; | |
e.exports = aa; | |
}, null); | |
__d("PagesVoiceBar", ["$", "Arbiter", "AsyncRequest", "BlueBar", "ChannelConstants", "DOM", "URI", "ViewportBounds"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { | |
b.__markCompiled && b.__markCompiled(); | |
var o = 'PagesVoiceBar/initialized', | |
p = 'PagesVoiceBar/switchVoice', | |
q = 'page_transition', | |
r = 'pages_voice_bar_sync', | |
s = null, | |
t = null, | |
u = false, | |
v = false, | |
w = n.addTop(0); | |
function x(da, ea) { | |
new i('/ajax/pages/switch_voice.php').setData(ea).setHandler(function(fa) { | |
ba(); | |
}).send(); | |
} | |
function y() { | |
s = null; | |
} | |
function z(da, ea) { | |
if (ea.obj.profile_id && ea.obj.profile_id === s) ba(); | |
} | |
function aa(da) { | |
h.subscribe(o, da); | |
} | |
function ba() { | |
m.getNextURI().go(); | |
} | |
var ca = { | |
initVoiceBar: function() { | |
if (v) return; | |
t = g('pagesVoiceBarContent'); | |
h.subscribe(p, x); | |
h.subscribe(q, y); | |
h.subscribe(k.getArbiterType(r), z); | |
v = true; | |
u = l.contains(j.getBar(), t); | |
h.inform(o, null, h.BEHAVIOR_STATE); | |
}, | |
update: function(da, ea) { | |
aa(function() { | |
s = ea; | |
l.setContent(t, da); | |
var fa = t.offsetHeight; | |
if (!u && w.getSize() !== fa) { | |
w.remove(); | |
w = n.addTop(n.getTop() + fa); | |
} | |
}); | |
} | |
}; | |
e.exports = ca; | |
}, null); | |
__d("PrivacyLiteFlyout", ["Animation", "Arbiter", "ArbiterMixin", "AsyncDialog", "AsyncRequest", "Banzai", "CSS", "DOM", "Ease", "Event", "PrivacyConst", "Style", "SubscriptionsHandler", "Toggler", "XPrivacyCheckupSpawnDialogController", "XPrivacyRemindersDismissController", "csx", "cx", "ge"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) { | |
b.__markCompiled && b.__markCompiled(); | |
var z = 'PrivacyLiteFlyout/expandingSection', | |
aa = {}, | |
ba = {}; | |
function ca(ia, ja, ka) { | |
var la = ja ? 0 : ia.offsetHeight; | |
r.set(ia, 'height', la + 'px'); | |
r.set(ia, 'overflow', 'hidden'); | |
m.show(ia); | |
var ma = ja ? ia.scrollHeight : 0, | |
na = n.getID(ia); | |
aa[na] && aa[na].stop(); | |
aa[na] = new g(ia).to('height', ma).ondone(function() { | |
aa[na] = null; | |
r.set(ia, 'height', ''); | |
r.set(ia, 'overflow', ''); | |
ma || m.hide(ia); | |
ka(); | |
}).duration(Math.abs(ma - la) * 1.5).ease(o.sineOut).go(); | |
} | |
function da(ia) { | |
var event = 'other_section'; | |
switch (ia) { | |
case 'who_can_see': | |
case 'who_can_contact': | |
case 'how_to_stop': | |
event = ia; | |
break; | |
} | |
return event; | |
} | |
var ea = null, | |
fa = false, | |
ga = false, | |
ha = Object.assign({ | |
loadBody: function() { | |
this._loadBody(false); | |
}, | |
loadBodyFromMegaphone: function() { | |
this._loadBody(true); | |
}, | |
_loadBody: function(ia) { | |
if (!fa && y('fbPrivacyLiteFlyoutLoading')) { | |
fa = true; | |
new k('/ajax/privacy/privacy_lite/loader').setData({ | |
from_megaphone: ia | |
}).send(); | |
} | |
}, | |
_addListener: function(ia, event, ja) { | |
return p.listen(ia, 'click', function() { | |
l.post('privacy_lite', { | |
event: event, | |
exit_point: ja | |
}); | |
}); | |
}, | |
addLoggingElem: function(ia, event, ja) { | |
var ka = this._loggingElements.length, | |
la = { | |
elem: ia, | |
event: event, | |
exit: ja | |
}; | |
this._loggingElements[ka] = la; | |
}, | |
registerSettingsAndBasicsLinkLogging: function(ia, event, ja, ka) { | |
var la = n.scry(ia, "._5cw0")[0], | |
ma = n.scry(ia, "._3djx")[0]; | |
if (la) { | |
this._settingsLinkListener && this._settingsLinkListener.release(); | |
this._settingsLinkListener = this._addListener(la, event, ja); | |
} | |
if (ma) { | |
this._privacyBasicsLinkListener && this._privacyBasicsLinkListener.release(); | |
this._privacyBasicsLinkListener = this._addListener(ma, event, ka); | |
} | |
}, | |
_subscribeListeners: function() { | |
this._loggingElements && this._loggingElements.forEach(function(ia) { | |
this._subscriptions && this._subscriptions.addSubscriptions(this._addListener(ia.elem, ia.event, ia.exit)); | |
}, this); | |
}, | |
renderBody: function(ia, ja) { | |
var ka = y('fbPrivacyLiteFlyoutLoading'); | |
if (ka) { | |
n.replace(ka, ia); | |
ha.registerCallback(function() { | |
ha.inform('load', null, h.BEHAVIOR_STATE); | |
}, ja); | |
} | |
}, | |
hideCleanup: function(ia) { | |
h.inform(z); | |
var ja = n.scry(ia, "._2va0").forEach(function(ka) { | |
m.removeClass(ka, "_2va0"); | |
}); | |
}, | |
registerFlyoutToggler: function(ia, ja, ka) { | |
this._loggingElements = []; | |
ea = ja; | |
var la = t.createInstance(ia); | |
la.setSticky(false); | |
t.listen(['show', 'hide'], ja, function(ma) { | |
ha.inform(ma); | |
ga = ma === 'show'; | |
if (!ga) { | |
ha.hideCleanup(ia); | |
la.hide(); | |
this._subscriptions && this._subscriptions.release(); | |
this._subscriptions = null; | |
h.inform('layer_hidden', { | |
type: 'PrivacyShortcutsFlyout' | |
}); | |
} else { | |
h.inform('layer_shown', { | |
type: 'PrivacyShortcutsFlyout' | |
}); | |
if (ka) { | |
ka.start(this); | |
ka = null; | |
} | |
h.subscribeOnce(z, function() { | |
this._subscriptions && this._subscriptions.release(); | |
this._subscriptions = new s(); | |
this._subscribeListeners(); | |
}.bind(this)); | |
l.post('privacy_lite', { | |
event: 'show_flyout', | |
exit_point: null | |
}); | |
} | |
}.bind(this)); | |
}, | |
isFlyoutVisible: function() { | |
return ea && t.getActive() === ea; | |
}, | |
exists: function() { | |
return !!n.scry(document.body, "._59fc")[0]; | |
}, | |
setFlyoutVisible: function(ia) { | |
ia ? t.show(ea) : t.hide(ea); | |
}, | |
showSection: function(ia) { | |
var ja = ba[ia]; | |
if (!ja) return; | |
if (!ja.sublist_container) { | |
ha.inform('expanded', ia, h.BEHAVIOR_STATE); | |
return; | |
} | |
var ka = ja.chevron, | |
la = ja.sublist_container; | |
h.inform(z, ka); | |
if (ha.inform('expand', ia) !== false) { | |
m.removeClass(ka, "_9or"); | |
m.addClass(ka, "_9os"); | |
ca(la, true, function() { | |
ha.inform('expanded', ia); | |
}); | |
} | |
}, | |
hideSection: function(ia, ja, ka) { | |
var la = ba[ia], | |
ma = la.chevron, | |
na = la.sublist_container; | |
if (ka === ma) return; | |
if (ha.inform('collapse', ia) !== false) { | |
m.addClass(ma, "_9or"); | |
m.removeClass(ma, "_9os"); | |
ca(na, false, function() { | |
ha.inform('collapsed', ia); | |
}); | |
} | |
}, | |
toggleSection: function(ia) { | |
var ja = ba[ia].chevron; | |
t.getInstance(ja).hide(); | |
if (m.hasClass(ja, "_9or")) { | |
ha.showSection(ia); | |
l.post('privacy_lite', { | |
event: da(ia) + '_expand', | |
exit_point: null | |
}); | |
new k('/ajax/privacy/privacy_lite/log_section_expand').setData({ | |
section: ia | |
}).send(); | |
} else { | |
ha.hideSection(ia); | |
l.post('privacy_lite', { | |
event: da(ia) + '_collapse', | |
exit_point: null | |
}); | |
} | |
}, | |
registerSection: function(ia, ja) { | |
ba[ia] = ja; | |
if (ja.sublist_container) { | |
h.subscribe(z, ha.hideSection.bind(null, ia)); | |
p.listen(ja.section_block, 'click', ha.toggleSection.bind(null, ia)); | |
} | |
ha.inform(ia); | |
}, | |
registerInlineHelpOnAudienceChangeNewSelector: function(ia, ja, ka, la) { | |
ia = ia.getInstance(); | |
ia.subscribe('changed', function(ma) { | |
this._registerInlineHelpOnAudienceChange(ja, ka, la, ia.getSelectedBaseValue()); | |
}.bind(this)); | |
}, | |
registerSelectorLogging: function(ia, ja, ka, la) { | |
ia = ia.getInstance(); | |
ia.subscribe('open', function() { | |
l.post('privacy_lite', { | |
event: ja, | |
exit_point: null | |
}); | |
}); | |
ia.subscribe('close', function() { | |
l.post('privacy_lite', { | |
event: ka, | |
exit_point: null | |
}); | |
}); | |
ia.subscribe('changed', function() { | |
l.post('privacy_lite', { | |
event: la, | |
exit_point: null | |
}); | |
}); | |
}, | |
_registerInlineHelpOnAudienceChange: function(ia, ja, ka, la) { | |
var ma = n.find(ia, "._9o_"), | |
na = n.find(ia, "._2v9_"); | |
if (ka) { | |
var oa = n.find(ia, "._5n9w"), | |
pa = (la == q.BaseValue.EVERYONE); | |
m.conditionShow(oa, pa); | |
m.conditionShow(ma, !pa); | |
if (oa && pa) { | |
var qa = (v.getURIBuilder()).setString('type', 'delta_everyone').setBool('log_plite', true).getURI(); | |
new k(qa).send(); | |
} | |
} else m.show(ma); | |
m.hide(na); | |
if (ja) new k('/ajax/privacy/privacy_lite/kill_intro').send(); | |
}, | |
registerInlineHelpXOutOnClick: function(ia, ja, ka) { | |
p.listen(ia, 'click', function() { | |
m.addClass(ja, "_9p0"); | |
}); | |
}, | |
registerBlockUnhideOnFocus: function(ia, ja) { | |
p.listen(ia, 'focus', function(ka) { | |
m.show(ka); | |
l.post('privacy_lite', { | |
event: 'block_user_input_click', | |
exit_point: null | |
}); | |
}.bind(this, ja)); | |
}, | |
registerMessageFilterSettingOnClick: function(ia, ja) { | |
var ka = n.find(ia, "._fv0"); | |
p.listen(ia, 'click', function() { | |
if (ka.checked) { | |
new k('/ajax/mercury/change_filtering_type.php').setData({ | |
filtering_type: ja, | |
source: 'privacy_lite' | |
}).send(); | |
} else { | |
var event = 'basic_filtering'; | |
if (ja === 'strict') event = 'strict_filtering'; | |
l.post('privacy_lite', { | |
event: event, | |
exit_point: null | |
}); | |
} | |
}); | |
}, | |
registerPrivacyCheckupListener: function(ia) { | |
p.listen(ia, 'click', function() { | |
this.setFlyoutVisible(false); | |
j.send(new k((u.getURIBuilder()).setEnum('source', 'plite').getURI())); | |
l.post('privacy_lite', { | |
event: 'exit_flyout', | |
exit_point: 'privacy_checkup' | |
}); | |
}.bind(this)); | |
}, | |
displayPrivacyCheckup: function(ia) { | |
ia.show(); | |
} | |
}, i); | |
e.exports = ha; | |
}, null); | |
__d("PrivacyLiteFlyoutHelp", ["Event", "Arbiter", "AsyncRequest", "Banzai", "ContextualHelpSearchController", "CSS", "DOM", "Parent", "csx", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { | |
b.__markCompiled && b.__markCompiled(); | |
var q, r; | |
function s(t, u, v, w, x) { | |
this._width = 315; | |
r = m.find(u, 'input'); | |
var y = m.create('div'); | |
this.init(t, r, y, v, w, { | |
focusSearchBox: false | |
}); | |
q = n.byClass(u, "_8-a"); | |
g.listen(x, 'click', function() { | |
this._hideSearch(this); | |
j.post('privacy_lite', { | |
event: 'plite_search_collapse', | |
exit_point: null | |
}); | |
}.bind(this)); | |
h.subscribe('PrivacyLiteFlyout/expandingSection', this._hideSearch.bind(this)); | |
var z = m.scry(q, "._d1r")[0]; | |
z && g.listen(z, 'click', function() { | |
l.addClass(q, "_aw6"); | |
r.focus(); | |
j.post('privacy_lite', { | |
event: 'plite_search_expand', | |
exit_point: null | |
}); | |
if (!this.suggestedResults) new i('/ajax/privacy/privacy_lite/help_suggestions').setHandler(function(aa) { | |
var ba = aa.getPayload().searchSuggestions, | |
ca = m.find(q, "._4_8m"); | |
m.setContent(ca, ba); | |
l.addClass(q, "_4_8l"); | |
}.bind(this)).send(); | |
}.bind(this)); | |
} | |
Object.assign(s.prototype, new k(), k.prototype, { | |
source: 'privacy_shortcuts', | |
_hideSearch: function() { | |
this.clearResults(); | |
l.removeClass(q, "_aw6"); | |
}, | |
show: function(t) { | |
if (t === this.topics_area) { | |
l.removeClass(q, "_aw7"); | |
return; | |
} else if (t === this.loader) { | |
l.addClass(q, "_aw7"); | |
l.hide(this.results_area); | |
} else l.hide(this.loader); | |
l.show(t); | |
} | |
}); | |
e.exports = s; | |
}, null); | |
__d("ViewasChromeBar", ["Event", "Arbiter", "AsyncRequest", "CSS", "DOM", "Focus", "ModalMask", "PageTransitionsRegistrar", "Parent", "cx", "csx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { | |
b.__markCompiled && b.__markCompiled(); | |
var r = 'ViewasChromeBar/initialized', | |
s = null, | |
t = false; | |
function u(x) { | |
h.subscribe(r, x); | |
} | |
function v(x) { | |
j.addClass(x, "_7g7"); | |
var y = k.find(x, "._7g0"); | |
l.set(k.find(y, '.textInput')); | |
} | |
var w = { | |
initChromeBar: function(x) { | |
if (t) return; | |
s = x; | |
t = true; | |
h.inform(r, null, h.BEHAVIOR_STATE); | |
}, | |
update: function(x, y) { | |
u(function() { | |
k.setContent(s, x); | |
if (y) new i('/ajax/privacy/glasgow/viewas_bar_flyout_open').send(); | |
}); | |
}, | |
registerSpecificModeOnClick: function(x) { | |
g.listen(x, 'click', v.bind(null, o.byClass(x, "_7f-"))); | |
}, | |
registerFlyoutModalMask: function() { | |
m.show(); | |
n.registerHandler(m.hide, 10); | |
} | |
}; | |
e.exports = w; | |
}, null); |
/*!CK:897646483!*/ /*1438789592,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["d\/t68"]); | |
} | |
__d("AdsHelpTrayCMSDataDispatcher", ["AdsDispatcher", "AdsHelpTrayActionTypes", "AdsLoadState"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
var j = { | |
dispatchContentList: function(k, l, m) { | |
g.handleUpdateFromViewAction({ | |
data: { | |
loadingStatus: i.LOADED, | |
list: l, | |
key: k | |
}, | |
logData: { | |
search_query: m, | |
results_count: Object.keys(l).length | |
}, | |
type: h.CMS_CONTENT_LIST_LOADED | |
}); | |
}, | |
dispatchLoadedCMS: function(k, l, m, n, o) { | |
this.dispatchCMSContent(i.LOADED, k, l, m, n, o); | |
}, | |
dispatchCMSContent: function(k, l, m, n, o, p) { | |
g.handleUpdateFromViewAction({ | |
data: { | |
loadingStatus: k, | |
content: n, | |
title: m, | |
cmsID: l, | |
shareback: o, | |
adgroupID: p | |
}, | |
logData: { | |
cms_id: l | |
}, | |
type: h.CMS_CONTENT_LOADED | |
}); | |
} | |
}; | |
e.exports = j; | |
}, null); |
/*!CK:2985687451!*/ /*1438578499,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["hQMkV"]); | |
} | |
__d("ActorSelectorNuxTypes", [], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = { | |
COMPOSER: "composer_seen_count", | |
COMPOSER_COVERED: "composer_covered_seen_count", | |
M_COMPOSER: "m_composer_seen_count", | |
M_UFI: "m_ufi_seen_count", | |
UFI: "ufi_seen_count", | |
UFI_TIMELINE: "ufi_timeline_seen_count", | |
UFI_TIMELINE_COVERED: "ufi_timeline_covered_seen_count" | |
}; | |
}, null); | |
__d("AbstractPopoverButton.react", ["React", "URI", "cloneWithProps", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = g, | |
m = l.PropTypes, | |
n = g.createClass({ | |
displayName: "AbstractPopoverButton", | |
propTypes: { | |
config: m.object.isRequired, | |
haschevron: m.bool, | |
maxwidth: m.number | |
}, | |
getDefaultProps: function() { | |
return { | |
haschevron: true | |
}; | |
}, | |
render: function() { | |
var o = this.props.config, | |
p = {}, | |
q = o.defaultMaxWidth; | |
if (typeof this.props.maxwidth !== 'undefined') q = this.props.maxwidth; | |
var r = null; | |
if (q) { | |
var s = this.props.haschevron ? q - o.chevronWidth : q; | |
if (this.props.label) r = { | |
maxWidth: s + 'px' | |
}; | |
p.style = Object.assign({}, p.style, { | |
maxWidth: q + 'px' | |
}); | |
} | |
p.image = null; | |
var t = null; | |
if (this.props.image && this.props.label) { | |
t = i(this.props.image, { | |
className: "_3-8_" | |
}); | |
} else if (this.props.image) t = this.props.image; | |
if (t || this.props.label) p.label = g.createElement("span", { | |
className: "_55pe", | |
style: r | |
}, t, this.props.label); | |
if (this.props.haschevron) p.imageRight = o.chevron; | |
p.className = k(o.button.props.className, "_2agf"); | |
p.href = new h('#'); | |
return i(o.button, p); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("XUIPopoverButton.react", ["AbstractPopoverButton.react", "Image.react", "React", "XUIButton.react", "cx", "ix", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = i, | |
o = n.PropTypes, | |
p = i.createClass({ | |
displayName: "ReactXUIPopoverButton", | |
propTypes: { | |
haschevron: o.bool, | |
maxwidth: o.number | |
}, | |
statics: { | |
getButtonSize: function(q) { | |
return q.size || 'medium'; | |
} | |
}, | |
render: function() { | |
var q = p.getButtonSize(this.props), | |
r = "_55pi"; | |
if (this.props.theme === 'dark') r = m(r, (("_5vto") + (q === 'small' ? ' ' + "_55_o" : '') + (q === 'medium' ? ' ' + "_55_p" : '') + (q === 'large' ? ' ' + "_55_q" : '') + (q === 'xlarge' ? ' ' + "_55_r" : '') + (q === 'xxlarge' ? ' ' + "_55_s" : ''))); | |
var s = this.props.chevron; | |
if (!s) { | |
var t = this.props.theme === 'dark' || this.props.use === 'confirm' || this.props.use === 'special' ? l('/images/ui/x/button/dark/chevron.png') : l('/images/ui/x/button/normal/chevron.png'); | |
s = i.createElement(h, { | |
src: t | |
}); | |
} | |
var u = { | |
button: i.createElement(j, i.__spread({}, this.props, { | |
className: m(this.props.className, r), | |
size: q | |
})), | |
chevron: s, | |
chevronWidth: 14, | |
defaultMaxWidth: this.props.maxwidth || 200 | |
}; | |
return (i.createElement(g, { | |
config: u, | |
haschevron: this.props.haschevron, | |
image: this.props.image, | |
label: this.props.label, | |
maxwidth: this.props.maxwidth | |
})); | |
} | |
}); | |
e.exports = p; | |
}, null); | |
__d("ActorSelectorPlaceholder.react", ["Image.react", "React", "TooltipData", "XUIPopoverButton.react", "cx", "fbt", "ix"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = h.createClass({ | |
displayName: "ActorSelectorPlaceholder", | |
getDefaultProps: function() { | |
return { | |
onActivate: function() {} | |
}; | |
}, | |
componentDidMount: function() { | |
if (this.props.focusOnInit && this.refs['open-menu-button']) h.findDOMNode(this.refs['open-menu-button']).focus(); | |
var o = l._("\u4ee5\u4f60\u7ba1\u7406\u7684\u5176\u4e2d\u4e00\u500b\u7c89\u7d72\u5c08\u9801\u8eab\u5206\u8aaa\u8b9a\u8aaa\u7559\u8a00\u3002"); | |
i.set(h.findDOMNode(this.refs['open-menu-button']), o, 'above', 'right'); | |
}, | |
render: function() { | |
return (h.createElement(j, { | |
className: "_4z8-", | |
haschevron: false, | |
image: h.createElement(g, { | |
width: 16, | |
height: 16, | |
src: m('images/pages/voice/flag.png') | |
}), | |
onFocus: function() { | |
return this.props.onActivate(true); | |
}.bind(this), | |
onMouseOver: function() { | |
return this.props.onActivate(false); | |
}.bind(this), | |
ref: "open-menu-button", | |
suppressed: true, | |
type: "button" | |
})); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("HasLayerContextMixin", ["React"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
getContextNode: function() { | |
var i = this.props.context; | |
if (this.props.contextRef) { | |
var j = this.props.contextRef(); | |
i = j && g.findDOMNode(j); | |
} | |
return i; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("XUIContextualDialogBody.react", ["React"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g.createClass({ | |
displayName: "XUIContextualDialogBody", | |
render: function() { | |
return (g.createElement("div", { | |
className: this.props.className | |
}, this.props.children)); | |
} | |
}); | |
e.exports = h; | |
}, null); | |
__d("XUIOverlayFooter.react", ["React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "XUIOverlayFooter", | |
render: function() { | |
return (g.createElement("div", g.__spread({}, this.props, { | |
className: i(this.props.className, "_5lnf uiOverlayFooter") | |
}), this.props.children)); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("XUIContextualDialogFooter.react", ["React", "XUIOverlayFooter.react", "cx"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "XUIContextualDialogFooter", | |
render: function() { | |
return (g.createElement(h, { | |
className: "_572u" | |
}, this.props.children)); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("XUIContextualDialogTitle.react", ["React", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g, | |
k = j.PropTypes, | |
l = g.createClass({ | |
displayName: "XUIContextualDialogTitle", | |
propTypes: { | |
use: k.oneOf(['primary', 'secondary']) | |
}, | |
getDefaultProps: function() { | |
return { | |
use: 'primary' | |
}; | |
}, | |
render: function() { | |
var m = this.props.use, | |
n = i((("_47lu") + (m === 'primary' ? ' ' + "_47lv" : '') + (m === 'secondary' ? ' ' + "_47mc" : '')), this.props.className); | |
return (g.createElement("h3", { | |
className: n | |
}, this.props.children)); | |
} | |
}); | |
e.exports = l; | |
}, null); | |
__d("XUIContextualDialog.react", ["HasLayerContextMixin", "ContextualDialogXUITheme", "React", "ReactAbstractContextualDialog", "ReactLayer", "XUIContextualDialogBody.react", "XUIContextualDialogFooter.react", "XUIContextualDialogTitle.react", "cx"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) { | |
b.__markCompiled && b.__markCompiled(); | |
var p = i, | |
q = p.PropTypes, | |
r = k.createClass(j.createSpec({ | |
displayName: 'ReactXUIContextualDialog', | |
theme: h | |
})), | |
s = i.createClass({ | |
displayName: "XUIContextualDialog", | |
mixins: [g], | |
propTypes: { | |
position: q.oneOf(['above', 'below', 'left', 'right']), | |
alignment: q.oneOf(['left', 'center', 'right']), | |
offsetX: q.number, | |
offsetY: q.number, | |
width: q.number, | |
autoFocus: q.bool, | |
arrowBehavior: q.func, | |
behaviors: q.object, | |
shown: q.bool, | |
context: q.object, | |
contextRef: q.func, | |
hoverContext: q.object, | |
hoverContextRef: q.func, | |
hoverShowDelay: q.number, | |
hoverHideDelay: q.number, | |
hideOnEscape: q.bool, | |
onToggle: q.func, | |
hasActionableContext: q.bool | |
}, | |
getDefaultProps: function() { | |
return { | |
hasActionableContext: false, | |
hideOnEscape: true | |
}; | |
}, | |
_getDialogBody: function() { | |
return this._getChildOfType(l); | |
}, | |
_getDialogTitle: function() { | |
return this._getChildOfType(n); | |
}, | |
_getDialogFooter: function() { | |
return this._getChildOfType(m); | |
}, | |
_getChildOfType: function(t) { | |
var u = null; | |
i.Children.forEach(this.props.children, function(v) { | |
if (!u && v.type === t) u = v; | |
}); | |
return u; | |
}, | |
updatePosition: function() { | |
var t = this.refs.dialog; | |
if (t) t.layer.updatePosition(); | |
}, | |
render: function() { | |
var t = this.props.children, | |
u = this._getDialogBody(); | |
if (u) t = i.createElement("div", { | |
className: "_53iv" | |
}, this._getDialogTitle(), u); | |
return (i.createElement(r, i.__spread({}, this.props, { | |
ref: "dialog", | |
context: this.getContextNode() | |
}), t, u ? this._getDialogFooter() : null)); | |
} | |
}); | |
s.WIDTH = { | |
NORMAL: 312, | |
WIDE: 400 | |
}; | |
e.exports = s; | |
}, null); | |
__d("XUIDialogFooter.react", ["LeftRight.react", "React", "XUIOverlayFooter.react", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = h, | |
m = l.PropTypes, | |
n = h.createClass({ | |
displayName: "XUIDialogFooter", | |
propTypes: { | |
fullBleedBorder: m.bool, | |
leftContent: m.object | |
}, | |
render: function() { | |
var o = (("_5a8u") + (this.props.fullBleedBorder ? ' ' + "_27qq" : '')); | |
return (h.createElement(i, h.__spread({}, this.props, { | |
className: k(this.props.className, o) | |
}), h.createElement("div", { | |
className: "_50f4" | |
}, h.createElement(g, null, h.createElement("div", null, this.props.leftContent), h.createElement("div", null, this.props.children))))); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("XUIDialogButton.react", ["React", "XUIButton.react", "cx", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
var k = g, | |
l = k.PropTypes, | |
m = g.createClass({ | |
displayName: "XUIDialogButton", | |
propTypes: { | |
action: l.oneOf(['cancel', 'confirm', 'button']) | |
}, | |
render: function() { | |
var n = this.props.action, | |
o = ((n == 'confirm' ? "layerConfirm" : '') + (n == 'cancel' ? ' ' + "layerCancel" : '') + (n == 'button' ? ' ' + "layerButton" : '')), | |
p = this.props.href; | |
if (n == 'cancel') { | |
p = '#'; | |
} else if (n == 'button') p = p || '#'; | |
return (g.createElement(h, g.__spread({}, this.props, { | |
className: j(this.props.className, o), | |
href: p | |
}))); | |
} | |
}); | |
e.exports = m; | |
}, null); | |
__d("XUIDialogOkayButton.react", ["React", "XUIDialogButton.react", "cx", "fbt", "joinClasses"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = g, | |
m = l.PropTypes, | |
n = g.createClass({ | |
displayName: "XUIDialogOkayButton", | |
propTypes: { | |
action: m.oneOf(['confirm', 'cancel', 'button']).isRequired | |
}, | |
render: function() { | |
return (g.createElement(h, g.__spread({}, this.props, { | |
className: k(this.props.className, "_2z1w"), | |
action: this.props.action, | |
label: j._("\u78ba\u5b9a") | |
}))); | |
} | |
}); | |
e.exports = n; | |
}, null); | |
__d("XUIMenuSeparator.react", ["MenuSeparator.react"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = g; | |
e.exports = h; | |
}, null); | |
__d("ReactSelectorUtils", ["React"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = { | |
processMenuItems: function(i, j) { | |
var k, l = g.Children.map(i, function(m) { | |
if (m) { | |
var n = m.props.value === j; | |
m = g.cloneElement(m, { | |
selected: n | |
}); | |
if (n) k = m; | |
return m; | |
} | |
}); | |
return { | |
items: l, | |
selectedItem: k | |
}; | |
}, | |
processMultiMenuItems: function(i, j) { | |
var k = [], | |
l = i; | |
if (j) l = g.Children.map(i, function(m) { | |
if (m) { | |
var n = j.some(function(o) { | |
return o === m.props.value; | |
}); | |
m = g.cloneElement(m, { | |
selected: n | |
}); | |
if (n) k.push(m); | |
return m; | |
} | |
}); | |
return { | |
items: l, | |
selectedItems: k | |
}; | |
} | |
}; | |
e.exports = h; | |
}, null); | |
__d("PopoverMenuContextMinWidth", ["CSS", "Style", "cx", "shield"], function(a, b, c, d, e, f, g, h, i, j) { | |
b.__markCompiled && b.__markCompiled(); | |
function k(l) { | |
"use strict"; | |
this._popoverMenu = l; | |
this._popover = l.getPopover(); | |
} | |
k.prototype.enable = function() { | |
"use strict"; | |
this._setMenuSubscription = this._popoverMenu.subscribe('setMenu', j(this._onSetMenu, this)); | |
}; | |
k.prototype.disable = function() { | |
"use strict"; | |
this._setMenuSubscription.unsubscribe(); | |
this._setMenuSubscription = null; | |
if (this._showSubscription) { | |
this._showSubscription.unsubscribe(); | |
this._showSubscription = null; | |
} | |
if (this._menuSubscription) { | |
this._menuSubscription.unsubscribe(); | |
this._menuSubscription = null; | |
} | |
}; | |
k.prototype._onSetMenu = function() { | |
"use strict"; | |
this._menu = this._popoverMenu.getMenu(); | |
this._showSubscription = this._popover.subscribe('show', j(this._updateWidth, this)); | |
var l = this._updateWidth.bind(this); | |
this._menuSubscription = this._menu.subscribe(['change', 'resize'], function() { | |
setTimeout(l, 0); | |
}); | |
this._updateWidth(); | |
}; | |
k.prototype._updateWidth = function() { | |
"use strict"; | |
var l = this._menu.getRoot(), | |
m = this._popoverMenu.getTriggerElem(), | |
n = m.offsetWidth; | |
h.set(l, 'min-width', n + 'px'); | |
g.conditionClass(l, "_575s", n >= l.offsetWidth); | |
}; | |
Object.assign(k.prototype, { | |
_setMenuSubscription: null, | |
_showSubscription: null, | |
_menuSubscription: null | |
}); | |
e.exports = k; | |
}, null); | |
__d("AbstractSelector.react", ["InlineBlock.react", "React", "PopoverMenu.react", "ReactSelectorUtils", "ContextualLayerAutoFlip", "PopoverMenuContextMinWidth", "PopoverMenuOverlappingBorder", "cloneWithProps", "cx", "invariant", "joinClasses", "intlList"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) { | |
b.__markCompiled && b.__markCompiled(); | |
var s = h, | |
t = s.PropTypes; | |
function u(w, x, y) { | |
if (w[x] == null) return; | |
var z = Array.isArray(w[x]); | |
if (w.multiple) { | |
if (!z) return new Error('You are trying to set a single value for `' + x + '` ' + 'but the menu has `multiple` set to true, so it should be an ' + 'array of values.'); | |
} else if (z) return new Error('You are trying to set an array of values for `' + x + '` ' + 'but the menu has `multiple` set to false, so it should be a ' + 'single value.'); | |
} | |
var v = h.createClass({ | |
displayName: "AbstractSelector", | |
propTypes: { | |
config: t.object.isRequired, | |
alignh: t.oneOf(['left', 'center', 'right']), | |
name: t.string, | |
overlappingborder: t.bool, | |
onChange: t.func, | |
disabled: t.bool, | |
maxheight: t.number, | |
multiple: t.bool, | |
defaultLabel: t.string, | |
defaultValue: u, | |
value: u, | |
initialValue: u | |
}, | |
getInitialState: function() { | |
return { | |
value: (this.props.value != null ? this.props.value : this.props.defaultValue != null ? this.props.defaultValue : this.props.initialValue) | |
}; | |
}, | |
setMenuValue: function(w) { | |
p(this.refs && this.refs.popover); | |
this._internalChange = true; | |
this.refs.popover.getMenu().setValue(w); | |
this._internalChange = false; | |
}, | |
onChange: function(w, x) { | |
if (this._internalChange) return; | |
if (this.props.value == null) { | |
var y = null; | |
if (this.props.multiple) { | |
y = x.map(function(z) { | |
return z.value; | |
}); | |
} else y = x.value; | |
this.setState({ | |
value: y | |
}); | |
} else this.setMenuValue(this.props.value); | |
if (this.props.onChange) this.props.onChange(x); | |
}, | |
componentWillReceiveProps: function(w) { | |
if (w.value != null) { | |
this.setState({ | |
value: w.value | |
}); | |
} else if (this.props.multiple !== w.multiple) this.setState({ | |
value: w.multiple ? [this.state.value] : this.state.value[0] | |
}); | |
}, | |
render: function() { | |
var w = this.props.config, | |
x = !this.props.multiple ? j.processMenuItems(this.props.children, this.state.value) : j.processMultiMenuItems(this.props.children, this.state.value), | |
y = n(w.menu, { | |
children: x.items, | |
className: q("_575t", w.menu.props.className), | |
maxheight: this.props.maxheight, | |
onChange: this.onChange | |
}), | |
z = '', | |
aa = null; | |
if (!this.props.multiple) { | |
var ba = x.selectedItem; | |
z = ba.props.label || ba.props.children; | |
if (ba.props.icon) aa = n(ba.props.icon, {}); | |
} else { | |
var ca = x.selectedItems; | |
if (!ca.length) { | |
z = this.props.defaultLabel; | |
} else z = r(ca.map(function(ka) { | |
return ka.props.children; | |
}), r.CONJUNCTIONS.NONE); | |
} | |
var da = { | |
label: z, | |
disabled: this.props.disabled | |
}; | |
if (aa) da.image = aa; | |
var ea = n(w.button, da), | |
fa = [k]; | |
if (w.layerBehaviors) fa = fa.concat(w.layerBehaviors); | |
var ga = [l]; | |
if (this.props.overlappingborder) ga.push(m); | |
var ha = null; | |
if (this.props.multiple) { | |
var ia = this.props.name + '[]', | |
ja; | |
if (this.state.value) ja = this.state.value.map(function(ka) { | |
return (h.createElement("input", { | |
key: ka, | |
type: "hidden", | |
name: ia, | |
value: ka | |
})); | |
}); | |
ha = h.createElement("div", null, ja); | |
} else ha = h.createElement("input", { | |
type: "hidden", | |
name: this.props.name, | |
value: this.state.value | |
}); | |
return (h.createElement(g, h.__spread({}, this.props, { | |
alignv: "middle", | |
name: null | |
}), h.createElement(i, { | |
ref: "popover", | |
menu: y, | |
alignh: this.props.alignh, | |
layerBehaviors: fa, | |
behaviors: ga, | |
disabled: this.props.disabled | |
}, ea), ha)); | |
}, | |
showMenu: function() { | |
p(this.isMounted()); | |
this.refs.popover.showPopover(); | |
}, | |
hideMenu: function() { | |
p(this.isMounted()); | |
this.refs.popover.hidePopover(); | |
} | |
}); | |
e.exports = v; | |
}, null); | |
__d("XUISelectorButton.react", ["React", "XUIPopoverButton.react", "invariant"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "XUISelectorButton", | |
render: function() { | |
i(!this.props.theme); | |
return (g.createElement(h, g.__spread({}, this.props, { | |
theme: "dark" | |
}))); | |
} | |
}); | |
e.exports = j; | |
}, null); | |
__d("XUISelector.react", ["AbstractSelector.react", "ContextualLayerPositionClassOnContext", "React", "ReactChildren", "ReactXUIMenu", "XUISelectorButton.react", "invariant"], function(a, b, c, d, e, f, g, h, i, j, k, l, m) { | |
b.__markCompiled && b.__markCompiled(); | |
var n = k.SelectableMenu, | |
o = k.SelectableItem, | |
p = i, | |
q = p.PropTypes, | |
r = i.createClass({ | |
displayName: "ReactXUISelector", | |
propTypes: { | |
layerBehaviors: q.array, | |
maxheight: q.number, | |
multiple: q.bool, | |
disabled: q.bool, | |
haschevron: q.bool, | |
maxwidth: q.number, | |
size: q.oneOf(['small', 'medium', 'large', 'xlarge', 'xxlarge']), | |
suppressed: q.bool, | |
use: q.oneOf(['default', 'special', 'confirm']) | |
}, | |
statics: { | |
getButtonSize: function(s) { | |
return s.size || 'medium'; | |
} | |
}, | |
getDefaultProps: function() { | |
return { | |
haschevron: true, | |
layerBehaviors: [], | |
multiple: false | |
}; | |
}, | |
render: function() { | |
var s, t = []; | |
j.forEach(this.props.children, function(v) { | |
if (v) t.push(v); | |
}); | |
if (t[0] && t[0].type === l) { | |
s = t[0]; | |
t = t.slice(1); | |
} else s = i.createElement(l, { | |
haschevron: this.props.haschevron, | |
disabled: this.props.disabled, | |
use: this.props.use, | |
size: this.props.size, | |
suppressed: this.props.suppressed, | |
maxwidth: this.props.maxwidth | |
}); | |
var u = { | |
button: s, | |
menu: i.createElement(n, { | |
maxheight: this.props.maxheight, | |
multiple: this.props.multiple | |
}), | |
layerBehaviors: this.props.layerBehaviors.concat([h]) | |
}; | |
return (i.createElement(g, i.__spread({}, this.props, { | |
ref: "abstractSelector", | |
config: u | |
}), t)); | |
}, | |
showMenu: function() { | |
m(this.isMounted()); | |
this.refs.abstractSelector.showMenu(); | |
}, | |
hideMenu: function() { | |
m(this.isMounted()); | |
this.refs.abstractSelector.hideMenu(); | |
} | |
}); | |
r.Option = o; | |
e.exports = r; | |
}, null); | |
__d("ActorSelector.react", ["ActorSelectorPlaceholder.react", "BizSiteIdentifier.brands", "BootloadedComponent.react", "Bootloader", "CurrentUser", "DOM", "DOMScroll", "Event", "Focus", "Image.react", "JSResource", "LayerFadeOnHide", "LayerFadeOnShow", "ModulePerformanceGating", "React", "ReactLayeredComponentMixin", "ShortProfiles", "TooltipData", "XUIContextualDialog.react", "XUIDialogBody.react", "XUIDialogFooter.react", "XUIDialogOkayButton.react", "XUIMenuSeparator.react", "XUISelector.react", "XUISpinner.react", "cx", "fbt", "getObjectValues", "goURI", "ix", "joinClasses", "mapObject", "tidyEvent", "BrandsAppConfig"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la, ma) { | |
b.__markCompiled && b.__markCompiled(); | |
var na = da.Option, | |
oa = b('BrandsAppConfig').gk; | |
if (!t.bootload_page_voice_dropdown) j.loadModules(["PageVoiceDropdownSelector.react"], function() {}); | |
var pa = u, | |
qa = pa.PropTypes, | |
ra = 32, | |
sa = 195, | |
ta = 500, | |
ua = 175, | |
va = 16, | |
wa = u.createClass({ | |
displayName: "ActorSelector", | |
mixins: [v], | |
propTypes: { | |
actorIDs: qa.array.isRequired, | |
actorPermissions: qa.object, | |
coverEnabled: qa.bool.isRequired, | |
focusOnInit: qa.bool, | |
loading: qa.bool, | |
nuxBody: qa.node, | |
nuxEnabledCovered: qa.bool, | |
nuxEnabledUncovered: qa.bool, | |
nuxHoverContext: qa.object, | |
onChange: qa.func.isRequired, | |
onCompleteNux: qa.func, | |
selectedActorID: qa.string, | |
settingsURI: qa.string, | |
showName: qa.bool, | |
showNameMaxWidth: qa.number, | |
suppressed: qa.bool, | |
tooltipConstructor: qa.func, | |
tooltipConstructorCovered: qa.func | |
}, | |
getDefaultProps: function() { | |
return { | |
suppressed: true | |
}; | |
}, | |
getInitialState: function() { | |
return { | |
actorData: {}, | |
clicked: false, | |
nuxShown: false | |
}; | |
}, | |
componentWillMount: function() { | |
this._fetchActorData(); | |
}, | |
render: function() { | |
var xa = oa.business_identity_page_voice_selector; | |
if (!this.props.selectedActorID || !this.state.actorData[this.props.selectedActorID]) return u.createElement(g, { | |
focusOnInit: this.props.focusOnInit | |
}); | |
var ya = this._renderSelectorOptions(); | |
if (ya.length < 1) return u.createElement("div", null); | |
if (xa) { | |
return this._renderNewComponent(); | |
} else return this._renderOldComponent(ya); | |
}, | |
_renderOldComponent: function(xa) { | |
var ya = this._isCovered(); | |
return (u.createElement("span", { | |
className: ka("_6vh", this.props.className) | |
}, u.createElement(ea, { | |
className: ((!this.props.loading ? "hidden_elem" : '') + (!this.props.suppressed ? ' ' + "_3-8_" : '')) | |
}), u.createElement(da, { | |
haschevron: !ya, | |
className: "_6vi", | |
disabled: this.props.loading, | |
maxheight: sa, | |
maxwidth: ya ? va : this.props.showName ? this.props.showNameMaxWidth : ra, | |
onChange: this.props.onChange, | |
onClick: this._onClickSelector, | |
ref: "selector", | |
suppressed: this.props.suppressed, | |
value: this.props.selectedActorID | |
}, xa))); | |
}, | |
_renderNewComponent: function() { | |
return (u.createElement("span", { | |
className: ka("_6vh", this.props.className) | |
}, u.createElement(ea, { | |
className: ((!this.props.loading ? "hidden_elem" : '') + (' ' + "_3-8_")) | |
}), u.createElement("span", { | |
ref: "selector" | |
}, u.createElement(i, { | |
bootloadPlaceholder: u.createElement(g, { | |
focusOnInit: this.props.focusOnInit | |
}), | |
bootloadLoader: q('PageVoiceDropdownSelector.react'), | |
covered: this._isCovered(), | |
focusOnInit: this.props.focusOnInit, | |
permissions: this.props.actorPermissions, | |
pages: this.state.actorData, | |
onChange: this.props.onChange, | |
onClick: this._onClickSelector, | |
selectedActorID: this.props.selectedActorID, | |
searchBarVisible: true, | |
showBusinessPages: false, | |
showPageName: this.props.showName, | |
showNameMaxWidth: this.props.showNameMaxWidth, | |
showPersonalPagesInRoot: !h.isBizSite(), | |
suppressed: this.props.suppressed, | |
user: ha(this.state.actorData)[0] | |
})))); | |
}, | |
renderLayers: function() { | |
if (!this.refs.selector) return null; | |
var xa = null; | |
if (this.props.settingsURI) xa = u.createElement("a", { | |
onClick: this._onClickSettings, | |
style: { | |
verticalAlign: 'middle' | |
} | |
}, ga._("\u8cbc\u6587\u5c6c\u6027\u8a2d\u5b9a")); | |
if (this.state.nuxShown) m.ensureVisible(u.findDOMNode(this.refs.selector), null, ua); | |
return { | |
nux: u.createElement(y, { | |
alignment: "right", | |
behaviors: { | |
LayerFadeOnHide: r, | |
LayerFadeOnShow: s | |
}, | |
contextRef: function() { | |
return this.refs.selector; | |
}.bind(this), | |
hasActionableContext: true, | |
offsetY: -8, | |
position: "below", | |
shown: this.state.nuxShown, | |
width: y.WIDTH.NORMAL | |
}, u.createElement(z, null, this.props.nuxBody), u.createElement(aa, { | |
leftContent: xa | |
}, u.createElement(ba, { | |
action: "button", | |
use: "confirm", | |
onClick: this._onCompleteNux | |
}))) | |
}; | |
}, | |
_renderSelectorOptions: function() { | |
var xa = [], | |
ya = []; | |
this.props.actorIDs.map(function(db) { | |
if (this._isBusinessManagedActor(db)) { | |
ya.push(db); | |
} else xa.push(db); | |
}.bind(this)); | |
var za = xa.map(this._renderActorOption); | |
if (ya && ya.length > 0) { | |
var ab = [], | |
bb = (u.createElement(p, { | |
src: ja('/images/bizsite/busmgr_bookmark_icon_16px.png'), | |
alt: "" | |
})), | |
cb = this._groupActorIDsByBusinessID(ya); | |
la(cb, function(db, eb) { | |
ab.push(u.createElement(ca, { | |
key: 'separator_' + eb | |
})); | |
var fb = ha(cb[eb])[0], | |
gb = fb ? this.state.actorData[fb].businessName : eb; | |
ab.push(u.createElement(na, { | |
disabled: true, | |
icon: bb, | |
key: 'option_' + eb | |
}, gb)); | |
la(db, function(hb) { | |
ab.push(this._renderActorOption(hb)); | |
}.bind(this)); | |
}.bind(this)); | |
} | |
za = za.concat(ab); | |
return za; | |
}, | |
_renderActorOption: function(xa) { | |
var ya = this._isCovered(), | |
za = this.state.actorData[xa]; | |
if (!za) return; | |
var ab = !!za.businessID, | |
bb = u.createElement(p, { | |
className: "_6vg", | |
height: va, | |
src: ya && k.getID() === xa ? ja('images/pages/voice/flag.png') : za.thumbSrc, | |
width: va, | |
alt: "" | |
}); | |
return (u.createElement(na, { | |
className: ((ab ? "plm" : '')), | |
icon: bb, | |
key: 'actor_' + xa, | |
value: xa | |
}, za.name)); | |
}, | |
componentDidMount: function() { | |
this._setTooltip(); | |
if (this.props.focusOnInit) this._focusSelector(); | |
if (this._canShowNux()) | |
if (this.props.nuxHoverContext) { | |
var xa = ma(n.listen(this.props.nuxHoverContext, 'mouseenter', function() { | |
var ya = setTimeout(function() { | |
xa.remove(); | |
if (this._canShowNux()) this.setState({ | |
nuxShown: true | |
}); | |
}.bind(this), ta), | |
za = ma(n.listen(this.props.nuxHoverContext, 'mouseleave', function() { | |
clearTimeout(ya); | |
za.remove(); | |
})); | |
}.bind(this))); | |
} else this.setState({ | |
nuxShown: true | |
}); | |
}, | |
componentDidUpdate: function(xa) { | |
if (this.state.focusOnUpdate) { | |
this._focusSelector(); | |
this.setState({ | |
focusOnUpdate: false | |
}); | |
} | |
if (this.props.actorIDs.toString() !== xa.actorIDs.toString()) this._fetchActorData(); | |
this._setTooltip(); | |
}, | |
_focusSelector: function() { | |
var xa = this.refs.selector && u.findDOMNode(this.refs.selector); | |
if (!xa) return; | |
var ya = l.scry(xa, 'a').pop(); | |
o.set(ya); | |
}, | |
_canShowNux: function() { | |
return (this.props.nuxEnabledCovered && this._isCovered()) || (this.props.nuxEnabledUncovered && !this._isCovered()); | |
}, | |
_fetchActorData: function() { | |
w.getMulti(this.props.actorIDs, function(xa) { | |
this.setState({ | |
actorData: xa, | |
focusOnUpdate: this.props.focusOnInit | |
}); | |
}.bind(this)); | |
}, | |
_isCovered: function() { | |
return (this.props.coverEnabled && !this.state.clicked && k.getID() === this.props.selectedActorID); | |
}, | |
_onClickSelector: function() { | |
this.setState({ | |
clicked: true | |
}); | |
if (this.state.nuxShown) this._onCompleteNux(); | |
}, | |
_onClickSettings: function() { | |
this._onCompleteNux(); | |
ia(this.props.settingsURI); | |
}, | |
_onCompleteNux: function() { | |
this.setState({ | |
nuxShown: false | |
}); | |
if (this.props.onCompleteNux) this.props.onCompleteNux({ | |
isCovered: this._isCovered() | |
}); | |
}, | |
_setTooltip: function() { | |
if (!this.refs.selector) return; | |
var xa = this.state.actorData[this.props.selectedActorID]; | |
if (!xa) return; | |
var ya = this._isCovered() && this.props.tooltipConstructorCovered ? this.props.tooltipConstructorCovered : this.props.tooltipConstructor; | |
if (!ya) return; | |
x.set(u.findDOMNode(this.refs.selector), ya(xa.name), 'above', 'right'); | |
}, | |
_isBusinessManagedActor: function(xa) { | |
return (this.state.actorData[xa] && this.state.actorData[xa].businessID); | |
}, | |
_groupActorIDsByBusinessID: function(xa) { | |
var ya = {}; | |
xa.forEach(function(za, ab) { | |
var bb = this.state.actorData[ab] ? this.state.actorData[ab].businessID : null; | |
if (bb) { | |
if (!za[bb]) za[bb] = {}; | |
za[bb][ab] = ab; | |
} | |
}.bind(this, ya)); | |
return ya; | |
} | |
}); | |
e.exports = wa; | |
}, null); | |
__d("XActorSelectorNuxSeenWriteController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/actor_selector\/nux\/mark_seen\/", { | |
nux_type: { | |
type: "Enum", | |
required: true, | |
enumType: 1 | |
} | |
}); | |
}, null); | |
__d("UFIActorSelector.react", ["ActorSelector.react", "ActorSelectorNuxTypes", "Arbiter", "AsyncRequest", "Parent", "React", "SubscriptionsHandler", "UFICentralUpdates", "UFIFeedbackTargets", "UFIUserActions", "XActorSelectorNuxSeenWriteController", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) { | |
b.__markCompiled && b.__markCompiled(); | |
var s = l, | |
t = s.PropTypes, | |
u = 'ufi_actor_selector_nux_disabled_event', | |
v = l.createClass({ | |
displayName: "UFIActorSelector", | |
propTypes: { | |
actorIDs: t.array.isRequired, | |
coverEnabled: t.bool.isRequired, | |
ftEntIdentifier: t.string.isRequired, | |
isTimeline: t.bool, | |
nuxEnabledCovered: t.bool, | |
nuxEnabledUncovered: t.bool, | |
nuxHoverContext: t.object, | |
settingsURI: t.string | |
}, | |
getInitialState: function() { | |
var w = k.byClass(this.props.nuxHoverContext, 'timelineUnitContainer'); | |
return { | |
loading: false, | |
nuxEnabledCovered: this.props.nuxEnabledCovered, | |
nuxEnabledUncovered: this.props.nuxEnabledUncovered, | |
nuxHoverContext: w ? w : this.props.nuxHoverContext, | |
selectedActorID: null | |
}; | |
}, | |
render: function() { | |
return (l.createElement(g, { | |
actorIDs: this.props.actorIDs, | |
coverEnabled: this.props.coverEnabled, | |
focusOnInit: this.props.focusOnInit, | |
loading: this.state.loading, | |
nuxBody: this._getNUXBody(), | |
nuxEnabledCovered: this.state.nuxEnabledCovered, | |
nuxEnabledUncovered: this.state.nuxEnabledUncovered, | |
nuxHoverContext: this.state.nuxHoverContext, | |
onChange: this._onChange, | |
onCompleteNux: this._onCompleteNux, | |
selectedActorID: this.state.selectedActorID, | |
settingsURI: this.props.settingsURI, | |
tooltipConstructor: this._getTooltipForActorName, | |
tooltipConstructorCovered: this._getCoveredTooltip | |
})); | |
}, | |
componentDidMount: function() { | |
this._updateSelectedActorIDFromFeedbackTarget(); | |
this._subscriptions = new m(); | |
this._subscriptions.addSubscriptions(n.subscribe('feedback-updated', function(w, x) { | |
if (this.props.ftEntIdentifier in x.updates) this._updateSelectedActorIDFromFeedbackTarget(); | |
}.bind(this)), i.subscribe(u, function() { | |
this.setState({ | |
nuxEnabledCovered: false, | |
nuxEnabledUncovered: false | |
}); | |
}.bind(this))); | |
}, | |
componentWillUnmount: function() { | |
this._subscriptions.release(); | |
}, | |
_updateSelectedActorIDFromFeedbackTarget: function() { | |
o.getFeedbackTarget(this.props.ftEntIdentifier, function(w) { | |
this.setState({ | |
loading: false, | |
selectedActorID: w.actorforpost | |
}); | |
}.bind(this)); | |
}, | |
_getNUXBody: function() { | |
return (r._("\u9078\u64c7\u8981\u4ee5\u672c\u4eba\u6216\u4f60\u7ba1\u7406\u7684\u5176\u4e2d\u4e00\u500b\u7c89\u7d72\u5c08\u9801\u7684\u8eab\u5206\u4f86\u6309\u8b9a\u548c\u7559\u8a00\u3002")); | |
}, | |
_getTooltipForActorName: function(w) { | |
return (r._("\u4ee5{actorName}\u7684\u8eab\u5206\u8aaa\u8b9a\u548c\u7559\u8a00", [r.param("actorName", w)])); | |
}, | |
_getCoveredTooltip: function() { | |
return (r._("\u4ee5\u4f60\u7ba1\u7406\u7684\u5176\u4e2d\u4e00\u500b\u7c89\u7d72\u5c08\u9801\u8eab\u5206\u8aaa\u8b9a\u8aaa\u7559\u8a00\u3002")); | |
}, | |
_onChange: function(w) { | |
this.setState({ | |
loading: true | |
}); | |
p.changeActor(this.props.ftEntIdentifier, w.value); | |
}, | |
_onCompleteNux: function(w) { | |
var x = w.isCovered, | |
y = null; | |
if (this.props.isTimeline) { | |
if (x) { | |
y = h.UFI_TIMELINE_COVERED; | |
} else y = h.UFI_TIMELINE; | |
} else y = h.UFI; | |
var z = q.getURIBuilder().setEnum('nux_type', y).getURI(); | |
new j().setURI(z).send(); | |
i.inform(u); | |
} | |
}); | |
e.exports = v; | |
}, null); | |
__d("XUIDialogCancelButton.react", ["React", "XUIDialogButton.react", "fbt"], function(a, b, c, d, e, f, g, h, i) { | |
b.__markCompiled && b.__markCompiled(); | |
var j = g.createClass({ | |
displayName: "XUIDialogCancelButton", | |
render: function() { | |
return (g.createElement(h, g.__spread({}, this.props, { | |
action: "cancel", | |
label: i._("\u53d6\u6d88") | |
}))); | |
} | |
}); | |
e.exports = j; | |
}, null); |
/*!CK:3801886264!*/ /*1438697732,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["MDrp8"]); | |
} | |
__d("legacy:EmployeePrefs", ["EmployeePrefs"], function(a, b, c, d) { | |
b.__markCompiled && b.__markCompiled(); | |
a.EmployeePrefs = b('EmployeePrefs'); | |
}, 3); | |
__d("ArticleAuthorEngagementBlock", ["CSS", "csx", "DOMQuery", "Event", "Style"], function(a, b, c, d, e, f, g, h, i, j, k) { | |
b.__markCompiled && b.__markCompiled(); | |
var l = { | |
registerClickHandler: function(m, n, o) { | |
j.listen(m, 'click', function(p) { | |
if (n !== (void 0) && g.shown(n) === false) { | |
if (o) { | |
var q = i.scry(m, "._3c21"), | |
r = i.scry(m, "._6m3"); | |
if (q.length === 0 || r.length === 0) return; | |
var s = q[0], | |
t = r[0]; | |
k.set(s, 'height', '237px'); | |
k.set(t, 'height', '179px'); | |
} | |
g.show(n); | |
} | |
}); | |
} | |
}; | |
e.exports = l; | |
}, null); |
/*!CK:3755121466!*/ /*1438058446,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["8jZry"]); | |
} | |
__d("AttachmentCTA", ["Style"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = 10, | |
i = { | |
init: function(j) { | |
var k = j.parentNode, | |
l = Math.max(k.scrollHeight - j.scrollHeight - h * 2, 0); | |
g.set(j, 'margin-top', l + 'px'); | |
} | |
}; | |
e.exports = i; | |
}, null); | |
__d("CanvasRHCHeightController.react", ["React", "DOMQuery"], function(a, b, c, d, e, f, g, h) { | |
b.__markCompiled && b.__markCompiled(); | |
var i = g, | |
j = i.PropTypes, | |
k = g.createClass({ | |
displayName: "CanvasRHCHeightController", | |
propTypes: { | |
rhc: j.object | |
}, | |
render: function() { | |
var l = h.find(document, '#contentArea'), | |
m = 0; | |
if (this.props.rhc.scrollHeight < l.scrollHeight) m = l.scrollHeight - this.props.rhc.scrollHeight; | |
var n = { | |
height: m + 'px' | |
}; | |
return (g.createElement("div", { | |
style: n | |
})); | |
} | |
}); | |
e.exports = k; | |
}, null); | |
__d("getNormalizedClientRect", ["getDocumentScrollElement"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
'use strict'; | |
function h(i) { | |
var j = i.getBoundingClientRect(), | |
k = 0, | |
l = 0, | |
m = g(i.ownerDocument), | |
n = m.getBoundingClientRect(); | |
if (n.left > 0) { | |
k = -n.left; | |
} else { | |
var o = m.scrollWidth + n.left, | |
p = n.width; | |
if (p > o) k = p - o; | |
} | |
if (n.top > 0) l = -n.top; | |
return { | |
bottom: j.bottom + l, | |
height: j.height, | |
left: j.left + k, | |
right: j.right + k, | |
top: j.top + l, | |
width: j.width | |
}; | |
} | |
e.exports = h; | |
}, null); | |
__d("FansJewel", ["AsyncRequest"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
function h(i) { | |
"use strict"; | |
i.subscribe('marked-seen', function() { | |
new g('/ajax/pages/fans_seen.php').setMethod('POST').send(); | |
}); | |
} | |
e.exports = h; | |
}, null); | |
__d("CanvasInteractionTracker", ["Banzai"], function(a, b, c, d, e, f, g) { | |
b.__markCompiled && b.__markCompiled(); | |
var h = 'canvas_sustained_interaction', | |
i; | |
function j(l, m, n) { | |
l.onmouseover = function(event) { | |
i = window.setTimeout(function() { | |
g.post(h, { | |
app_id: m | |
}); | |
}, n); | |
}; | |
l.onmouseout = function(event) { | |
window.clearTimeout(i); | |
}; | |
} | |
var k = { | |
setup: j | |
}; | |
e.exports = k; | |
}, null); | |
__d("StickyArea", ["CSS", "DOM", "DOMQuery", "Event", "Run", "Style", "ViewportBounds", "cx", "getNormalizedClientRect", "getOverlayZIndex", "removeFromArray", "throttle"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) { | |
b.__markCompiled && b.__markCompiled(); | |
var s = [], | |
t = null, | |
u = null, | |
v = null, | |
w = r.acrossTransitions(x, 1000); | |
function x() { | |
s.sort(function(da, ea) { | |
var fa = da.getNode(), | |
ga = ea.getNode(); | |
if (fa.compareDocumentPosition) { | |
return 3 - (fa.compareDocumentPosition(ga) & 6); | |
} else return fa.sourceIndex - ga.sourceIndex; | |
}); | |
} | |
function y(da, ea, fa) { | |
var ga = da.getPlaceholder(), | |
ha = da.getNode(), | |
ia = l.get(ha, 'float'), | |
ja = da.getData(); | |
if (ja.placeholderWidth !== ea || ja.placeholderHeight !== fa || ja.placeholderFloat !== ia) { | |
l.apply(ga, { | |
'float': ia, | |
height: fa + 'px', | |
width: ea + 'px' | |
}); | |
ja.placeholderHeight = fa; | |
ja.placeholderWidth = ea; | |
} | |
if (ha.nextSibling !== ga) h.insertAfter(ha, ga); | |
} | |
function z(da, ea) { | |
var fa = da.getData(); | |
if (fa.fixed !== ea) { | |
l.apply(da.getNode(), fa.styles); | |
g.conditionShow(da.getPlaceholder(), ea); | |
fa.fixed = ea; | |
} | |
} | |
function aa(da, ea) { | |
if (!da) { | |
return 0; | |
} else if (ea.right <= da.rect.left || ea.left >= da.rect.right) { | |
return aa(da.prev, ea); | |
} else return da.bottom; | |
} | |
function ba() { | |
var da = 0, | |
ea = s.length, | |
fa = 100; | |
function ga(ha, ia) { | |
var ja = fa; | |
while (da < ea) { | |
var ka = s[da], | |
la = ka.getNode(); | |
if (ia && !i.contains(ia, la)) break; | |
fa = Math.max(ja, ka.getZIndex()); | |
var ma = ka.getData(), | |
na = la.parentNode, | |
oa = ma.styles; | |
for (var pa in oa) oa[pa] = ''; | |
z(ka, false); | |
var qa = la.offsetHeight, | |
ra = la.offsetWidth, | |
sa = o(la), | |
ta = aa(ha, sa) + ka.getOffset(); | |
if (sa.top <= ta) { | |
oa.width = ra + 'px'; | |
var ua = parseInt(l.get(na, 'padding-bottom'), 10), | |
va = o(na); | |
if (va.bottom - ua > ta + qa) { | |
var wa = parseInt(l.get(la, 'margin-left'), 10); | |
oa.position = 'fixed'; | |
oa.bottom = 'auto'; | |
oa.top = ta + 'px'; | |
oa.left = sa.left - wa + 'px'; | |
} else { | |
if (!ma.parent || na !== ma.parent) { | |
if (l.get(na, 'position') === 'static') l.set(na, 'position', 'relative'); | |
ma.parent = na; | |
} | |
oa.position = 'absolute'; | |
oa.top = 'auto'; | |
oa.bottom = ua + 'px'; | |
var xa = parseInt(l.get(na, 'border-left-width'), 10); | |
oa.left = (sa.left - va.left - xa) + 'px'; | |
} | |
y(ka, ra, qa); | |
z(ka, true); | |
} | |
da++; | |
ga({ | |
bottom: ta + qa, | |
prev: ha, | |
rect: sa | |
}, na); | |
l.set(la, 'z-index', fa++); | |
} | |
} | |
ga(null, null); | |
} | |
function ca(da, ea, fa) { | |
"use strict"; | |
this._node = da; | |
this._data = { | |
fixed: false, | |
placeholderFloat: null, | |
placeholderHeight: null, | |
placeholderWidth: null, | |
styles: {} | |
}; | |
this._offset = fa; | |
g.addClass(da, "_k"); | |
if (!ea) k.onLeave(this.destroy.bind(this)); | |
if (!s.length) { | |
t = j.listen(window, 'scroll', function() { | |
w(); | |
ba(); | |
}); | |
u = j.listen(window, 'resize', function() { | |
w(); | |
ba(); | |
}); | |
v = m.subscribe('change', function() { | |
w(); | |
ba(); | |
}); | |
} | |
s.push(this); | |
ca.reflow(); | |
} | |
ca.prototype.destroy = function() { | |
"use strict"; | |
q(s, this); | |
if (!s.length) { | |
t.remove(); | |
t = null; | |
u.remove(); | |
u = null; | |
} | |
if (this._placeholder) h.remove(this._placeholder); | |
var da = 0; | |
for (var ea in this._data.styles) { | |
this._data.styles[ea] = ''; | |
da++; | |
} | |
if (da) l.apply(this._node, this._data.styles); | |
}; | |
ca.prototype.getData = function() { | |
"use strict"; | |
return this._data; | |
}; | |
ca.prototype.getNode = function() { | |
"use strict"; | |
return this._node; | |
}; | |
ca.prototype.getOffset = function() { | |
"use strict"; | |
return this._offset || 0; | |
}; | |
ca.prototype.getPlaceholder = function() { | |
"use strict"; | |
if (!this._placeholder) this._placeholder = h.create('div'); | |
return this._placeholder; | |
}; | |
ca.prototype.getZIndex = function() { | |
"use strict"; | |
if (!this._zIndex) this._zIndex = p(this._node); | |
return this._zIndex; | |
}; | |
ca.prototype.setOffset = function(da) { | |
"use strict"; | |
this._offset = da; | |
}; | |
ca.reflow = r.acrossTransitions(function() { | |
x(); | |
ba(); | |
}, 100); | |
e.exports = ca; | |
}, null); |
/*!CK:998514971!*/ /*1438811940,*/ | |
if (self.CavalryLogger) { | |
CavalryLogger.start_js(["jndCB"]); | |
} | |
__d("XAdPreferencesCategoryInfoController", ["XController"], function(a, b, c, d, e, f) { | |
b.__markCompiled && b.__markCompiled(); | |
e.exports = b("XController").create("\/ads\/preferences\/category_info\/", { | |
ad_id: { | |
type: "Int", | |
required: true | |
}, | |
category_fbid: { | |
type: "Int", | |
required: true | |
} | |
}); | |
}, null); | |
__d("AdsPreferencesInterestListItem.react", ["AdPreferencesDesktopStrings", "AsyncRequest", "Image.react", "Layout.react", "xuiglyph", "React", "ReactLayeredComponentMixin", "XAdPreferencesCategoryInfoController", "XUIContextualDialog.react", "XUIContextualDialogTitle.react", "XUIContextualDialogBody.react", "XUIText.react", "cx", "fbt"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) { | |
b.__markCompiled && b.__markCompiled(); | |
var u = j.Column, | |
v = j.FillColumn, | |
w = l, | |
x = w.PropTypes, | |
y = l.createClass({ | |
displayName: "AdsPreferencesInterestListItem", | |
mixins: [m], | |
propTypes: { | |
adID: x.number.isRequired, | |
interest: x.object.isRequired, | |
isListItem: x.bool.isRequired, | |
onInterestClick: x.func.isRequired, | |
removed: x.bool.isRequired, | |
setDialog: x.func, | |
setReportDialog: x.func | |
}, | |
getInitialState: function() { | |
return { | |
xHover: false, | |
iHover: false, | |
interestHover: false, | |
enterTimeout: -1, | |
suggestions: {} | |
}; | |
}, | |
_xHover: function(event) { | |
this.setState({ | |
xHover: !this.state.xHover | |
}); | |
}, | |
_xOver: function(event) { | |
this.setState({ | |
xHover: true | |
}); | |
}, | |
_iHover: function(event) { | |
this.setState({ | |
iHover: !this.state.iHover | |
}); | |
}, | |
_interestHover: function(z) { | |
this.setState({ | |
interestHover: z | |
}); | |
}, | |
_interestEnter: function(event, z, aa) { | |
if (aa) { | |
this._interestHover(true); | |
} else { | |
var ba = setTimeout(this._interestEnter.bind(this, true, true, true), 250); | |
this.setState({ | |
enterTimeout: ba | |
}); | |
} | |
}, | |
_interestLeave: function(event) { | |
this._interestHover(false); | |
clearTimeout(this.state.enterTimeout); | |
}, | |
_handleInterestClick: function(event) { | |
var z = this.refs['toggle_' + this.props.interest.id]; | |
this.props.onInterestClick(this.props.interest, this.props.removed, z); | |
}, | |
_onInterestTextClick: function(event) { | |
if (this.state.suggestions > 0 && this.props.setDialog) { | |
this.props.setDialog(this.props.interest, this.state.suggestions); | |
} else { | |
var z = n.getURIBuilder().setInt('ad_id', this.props.adID).setInt('category_fbid', this.props.interest.id).getURI(); | |
new h(z).setHandler(function(aa) { | |
var ba = aa.payload, | |
ca = ba.suggestions, | |
da = this.props.interest; | |
if (!da.description) da.description = t._("\u9019\u662f\u4f60\u65b0\u589e\u7684\u504f\u597d\u3002"); | |
this.setState({ | |
suggestions: ca | |
}); | |
if (this.props.setDialog) this.props.setDialog(da, ba.suggestions); | |
}.bind(this)).send(); | |
} | |
}, | |
_onReportPreferenceClick: function(event) { | |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)