diff --git a/resources/sprite/manifest/icon.json b/resources/sprite/manifest/icon.json index c12971f2e0..62019003a3 100644 --- a/resources/sprite/manifest/icon.json +++ b/resources/sprite/manifest/icon.json @@ -1,196 +1,970 @@ { - "sprites" : [ - "action-arrow_left", - "action-arrow_left-grey", - "action-arrow_left-white", - "action-arrow_right", - "action-arrow_right-grey", - "action-arrow_right-white", - "action-attach", - "action-attach-grey", - "action-attach-white", - "action-blame", - "action-blame-grey", - "action-blame-white", - "action-check", - "action-check-grey", - "action-check-white", - "action-comment", - "action-comment-grey", - "action-comment-white", - "action-computer", - "action-computer-grey", - "action-computer-white", - "action-create", - "action-create-grey", - "action-create-white", - "action-delete", - "action-delete-grey", - "action-delete-white", - "action-disable", - "action-disable-grey", - "action-disable-white", - "action-dislike", - "action-dislike-grey", - "action-dislike-white", - "action-download", - "action-download-grey", - "action-download-white", - "action-edit", - "action-edit-grey", - "action-edit-white", - "action-enable", - "action-enable-grey", - "action-enable-white", - "action-file", - "action-file-grey", - "action-file-white", - "action-flag", - "action-flag-0", - "action-flag-0-grey", - "action-flag-0-white", - "action-flag-1", - "action-flag-1-grey", - "action-flag-1-white", - "action-flag-2", - "action-flag-2-grey", - "action-flag-2-white", - "action-flag-3", - "action-flag-3-grey", - "action-flag-3-white", - "action-flag-4", - "action-flag-4-grey", - "action-flag-4-white", - "action-flag-5", - "action-flag-5-grey", - "action-flag-5-white", - "action-flag-6", - "action-flag-6-grey", - "action-flag-6-white", - "action-flag-7", - "action-flag-7-grey", - "action-flag-7-white", - "action-flag-ghost", - "action-flag-ghost-grey", - "action-flag-ghost-white", - "action-flag-grey", - "action-flag-white", - "action-folder-open", - "action-folder-open-grey", - "action-folder-open-white", - "action-fork", - "action-fork-grey", - "action-fork-white", - "action-herald", - "action-herald-grey", - "action-herald-white", - "action-highlight", - "action-highlight-grey", - "action-highlight-white", - "action-history", - "action-history-grey", - "action-history-white", - "action-image", - "action-image-grey", - "action-image-white", - "action-like", - "action-like-grey", - "action-like-white", - "action-link", - "action-link-grey", - "action-link-white", - "action-lint-info", - "action-lint-info-grey", - "action-lint-info-white", - "action-lint-ok", - "action-lint-ok-grey", - "action-lint-ok-white", - "action-lint-warning", - "action-lint-warning-grey", - "action-lint-warning-white", - "action-lock", - "action-lock-grey", - "action-lock-white", - "action-love", - "action-love-grey", - "action-love-white", - "action-merge", - "action-merge-grey", - "action-merge-white", - "action-message", - "action-message-grey", - "action-message-white", - "action-meta-mta", - "action-meta-mta-grey", - "action-meta-mta-white", - "action-move", - "action-move-grey", - "action-move-white", - "action-new", - "action-new-grey", - "action-new-white", - "action-perflab", - "action-perflab-grey", - "action-perflab-white", - "action-preview", - "action-preview-grey", - "action-preview-white", - "action-refresh", - "action-refresh-grey", - "action-refresh-white", - "action-remove", - "action-remove-grey", - "action-remove-white", - "action-search", - "action-search-grey", - "action-search-white", - "action-start-sandcastle", - "action-start-sandcastle-grey", - "action-start-sandcastle-white", - "action-subscribe-add", - "action-subscribe-add-grey", - "action-subscribe-add-white", - "action-subscribe-auto", - "action-subscribe-auto-grey", - "action-subscribe-auto-white", - "action-subscribe-delete", - "action-subscribe-delete-grey", - "action-subscribe-delete-white", - "action-tag", - "action-tag-grey", - "action-tag-white", - "action-transcript", - "action-transcript-grey", - "action-transcript-white", - "action-undo", - "action-undo-grey", - "action-undo-white", - "action-unlock", - "action-unlock-grey", - "action-unlock-white", - "action-unmerge", - "action-unmerge-grey", - "action-unmerge-white", - "action-unpublish", - "action-unpublish-grey", - "action-unpublish-white", - "action-warning", - "action-warning-grey", - "action-warning-white", - "action-world", - "action-world-grey", - "action-world-white", - "remarkup-assist-text_b", - "remarkup-assist-text_code", - "remarkup-assist-text_help", - "remarkup-assist-text_i", - "remarkup-assist-text_image", - "remarkup-assist-text_larger", - "remarkup-assist-text_meme", - "remarkup-assist-text_ol", - "remarkup-assist-text_table", - "remarkup-assist-text_tag", - "remarkup-assist-text_tt", - "remarkup-assist-text_ul" - ] + "version" : 1, + "sprites" : { + "action-arrow_left" : { + "name" : "action-arrow_left", + "rule" : ".action-arrow_left", + "hash" : "d4d2ea82a38975e9630d75ea36a97239" + }, + "action-arrow_left-grey" : { + "name" : "action-arrow_left-grey", + "rule" : ".action-arrow_left-grey", + "hash" : "ab68a8f75c055fe43e02d9a55006ac80" + }, + "action-arrow_left-white" : { + "name" : "action-arrow_left-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-arrow_left", + "hash" : "23e5824a1e58e858d7fff622e10c9670" + }, + "action-arrow_right" : { + "name" : "action-arrow_right", + "rule" : ".action-arrow_right", + "hash" : "9f23ba0505db0e199a866d1810f8156a" + }, + "action-arrow_right-grey" : { + "name" : "action-arrow_right-grey", + "rule" : ".action-arrow_right-grey", + "hash" : "1d71f24b7821e63eca17d2c2501892a9" + }, + "action-arrow_right-white" : { + "name" : "action-arrow_right-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-arrow_right", + "hash" : "c36b010025e1550fda9dff1d4b677076" + }, + "action-attach" : { + "name" : "action-attach", + "rule" : ".action-attach", + "hash" : "bc18c0f45652bca9b7f1d9996fef3514" + }, + "action-attach-grey" : { + "name" : "action-attach-grey", + "rule" : ".action-attach-grey", + "hash" : "ba38e3af334aafa6f42ab01ef8879cef" + }, + "action-attach-white" : { + "name" : "action-attach-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-attach", + "hash" : "8f95a2a247a1b2f79c55b76bc62caedb" + }, + "action-blame" : { + "name" : "action-blame", + "rule" : ".action-blame", + "hash" : "b90fd9e982c92a29b8eb61a02d9276d1" + }, + "action-blame-grey" : { + "name" : "action-blame-grey", + "rule" : ".action-blame-grey", + "hash" : "dd16c414547b9ced79f95bf8481e9406" + }, + "action-blame-white" : { + "name" : "action-blame-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-blame", + "hash" : "f2d2a1a06236432903297bf58cf00138" + }, + "action-check" : { + "name" : "action-check", + "rule" : ".action-check", + "hash" : "0806a6293f4b6e65112fc17484ae4f70" + }, + "action-check-grey" : { + "name" : "action-check-grey", + "rule" : ".action-check-grey", + "hash" : "c10d72cc1504f9d5ffccbd26fd798518" + }, + "action-check-white" : { + "name" : "action-check-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-check", + "hash" : "6328b4abc8f44954e637c3382e859536" + }, + "action-comment" : { + "name" : "action-comment", + "rule" : ".action-comment", + "hash" : "e7e0d20602f4a77e90e13e0a60974ce5" + }, + "action-comment-grey" : { + "name" : "action-comment-grey", + "rule" : ".action-comment-grey", + "hash" : "a0a1f0d0d32fab29c58dcc59c2b6fcb2" + }, + "action-comment-white" : { + "name" : "action-comment-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-comment", + "hash" : "370761544111cf3d6a8878927baa9199" + }, + "action-computer" : { + "name" : "action-computer", + "rule" : ".action-computer", + "hash" : "b724d76f98fff7bc187f40cc23c06bc8" + }, + "action-computer-grey" : { + "name" : "action-computer-grey", + "rule" : ".action-computer-grey", + "hash" : "3c46bda86e5c60b81909c1fa1395bb14" + }, + "action-computer-white" : { + "name" : "action-computer-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-computer", + "hash" : "82cef35cbea64a3ee60a9b71f2a1c583" + }, + "action-create" : { + "name" : "action-create", + "rule" : ".action-create", + "hash" : "360c79b389e5f3667f9be3ec47b3f248" + }, + "action-create-grey" : { + "name" : "action-create-grey", + "rule" : ".action-create-grey", + "hash" : "03ac5c89de22f74442fab30ca777119f" + }, + "action-create-white" : { + "name" : "action-create-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-create", + "hash" : "126f91b6c84a5f6d5b60b347b690d12c" + }, + "action-delete" : { + "name" : "action-delete", + "rule" : ".action-delete", + "hash" : "3bcd865dc1d46645735cd97400ff8aba" + }, + "action-delete-grey" : { + "name" : "action-delete-grey", + "rule" : ".action-delete-grey", + "hash" : "272c2791dbbaa37e9240e1da45325546" + }, + "action-delete-white" : { + "name" : "action-delete-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-delete", + "hash" : "e773f5117a9a29f3fa338e7ef8dc1780" + }, + "action-disable" : { + "name" : "action-disable", + "rule" : ".action-disable", + "hash" : "d9b0d16bdeaad39ccd881641c3bbd966" + }, + "action-disable-grey" : { + "name" : "action-disable-grey", + "rule" : ".action-disable-grey", + "hash" : "7ff9a4502d1ae097d105b96d05e0ac64" + }, + "action-disable-white" : { + "name" : "action-disable-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-disable", + "hash" : "eae52c680ce1bc0b529a76a200cc52df" + }, + "action-dislike" : { + "name" : "action-dislike", + "rule" : ".action-dislike", + "hash" : "12234ae1fff0a0cae4a3b08366dc8e76" + }, + "action-dislike-grey" : { + "name" : "action-dislike-grey", + "rule" : ".action-dislike-grey", + "hash" : "b75e2fb881f80263a943aae46e866da5" + }, + "action-dislike-white" : { + "name" : "action-dislike-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-dislike", + "hash" : "045543b094cdcd888d64860869cc6e5b" + }, + "action-download" : { + "name" : "action-download", + "rule" : ".action-download", + "hash" : "d833c952e92afabe38f22afd797bd930" + }, + "action-download-grey" : { + "name" : "action-download-grey", + "rule" : ".action-download-grey", + "hash" : "57676a6e25d26648d1fd9a8a8f580771" + }, + "action-download-white" : { + "name" : "action-download-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-download", + "hash" : "cc5c770af0fd5a1097c743c99fd27985" + }, + "action-edit" : { + "name" : "action-edit", + "rule" : ".action-edit", + "hash" : "7a689907e70134d9b959cce8b9563f78" + }, + "action-edit-grey" : { + "name" : "action-edit-grey", + "rule" : ".action-edit-grey", + "hash" : "180a369e4ebfd663bac4b0f71c6fd6e0" + }, + "action-edit-white" : { + "name" : "action-edit-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-edit", + "hash" : "8c1e028cdcffd4b5f2b2b1ffbefd94aa" + }, + "action-enable" : { + "name" : "action-enable", + "rule" : ".action-enable", + "hash" : "44a48b59d175cbf76ed76c5f10f37e99" + }, + "action-enable-grey" : { + "name" : "action-enable-grey", + "rule" : ".action-enable-grey", + "hash" : "8bfde2b13363e83c2980bb67a756b46e" + }, + "action-enable-white" : { + "name" : "action-enable-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-enable", + "hash" : "455194cf17fcced25cbc0156951180fd" + }, + "action-file" : { + "name" : "action-file", + "rule" : ".action-file", + "hash" : "ae34ce5e62b1bc3c4dc6da4f7fbf7447" + }, + "action-file-grey" : { + "name" : "action-file-grey", + "rule" : ".action-file-grey", + "hash" : "1eb8c0b693fa2ee7a71fe6ef885b20eb" + }, + "action-file-white" : { + "name" : "action-file-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-file", + "hash" : "fc348080a6fa3d845f8da0dba1f0accf" + }, + "action-flag" : { + "name" : "action-flag", + "rule" : ".action-flag", + "hash" : "6c005cc20af556cd6131747654444ec6" + }, + "action-flag-0" : { + "name" : "action-flag-0", + "rule" : ".action-flag-0", + "hash" : "b6147505c95144f0ce6c5bc4c74a3bf3" + }, + "action-flag-0-grey" : { + "name" : "action-flag-0-grey", + "rule" : ".action-flag-0-grey", + "hash" : "6422b4d1e9878dfedc7ec670ba97c9ac" + }, + "action-flag-0-white" : { + "name" : "action-flag-0-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-0", + "hash" : "44e72a52052200846fcf3d7dd13d1247" + }, + "action-flag-1" : { + "name" : "action-flag-1", + "rule" : ".action-flag-1", + "hash" : "7c9c162d50e8496e373b719ef7b507b6" + }, + "action-flag-1-grey" : { + "name" : "action-flag-1-grey", + "rule" : ".action-flag-1-grey", + "hash" : "1bc1b824544c19f83c0c564fba07e504" + }, + "action-flag-1-white" : { + "name" : "action-flag-1-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-1", + "hash" : "83e63386c1b5fe0a2580c57dcd3d5bc8" + }, + "action-flag-2" : { + "name" : "action-flag-2", + "rule" : ".action-flag-2", + "hash" : "c6c1a0a1d66e4a492989af2e5a784c34" + }, + "action-flag-2-grey" : { + "name" : "action-flag-2-grey", + "rule" : ".action-flag-2-grey", + "hash" : "b80cf86cae93a20a87d8cb8c742b9576" + }, + "action-flag-2-white" : { + "name" : "action-flag-2-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-2", + "hash" : "86e4cdc53d9101f144455114ec01856b" + }, + "action-flag-3" : { + "name" : "action-flag-3", + "rule" : ".action-flag-3", + "hash" : "8bbc031251a1834d6ede293474d62545" + }, + "action-flag-3-grey" : { + "name" : "action-flag-3-grey", + "rule" : ".action-flag-3-grey", + "hash" : "0c4934d095a7a6ffa4ee734203af3616" + }, + "action-flag-3-white" : { + "name" : "action-flag-3-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-3", + "hash" : "de92148b46fa30ed3e5cfdc63c941213" + }, + "action-flag-4" : { + "name" : "action-flag-4", + "rule" : ".action-flag-4", + "hash" : "2ba2c89181a1f7949a1e9ac93bce41e3" + }, + "action-flag-4-grey" : { + "name" : "action-flag-4-grey", + "rule" : ".action-flag-4-grey", + "hash" : "84594202eff4dd72abcf3ae30f8138b0" + }, + "action-flag-4-white" : { + "name" : "action-flag-4-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-4", + "hash" : "832420753c9481e7fc0de1b16d465951" + }, + "action-flag-5" : { + "name" : "action-flag-5", + "rule" : ".action-flag-5", + "hash" : "922270dee1b7b36be6845008352d34e8" + }, + "action-flag-5-grey" : { + "name" : "action-flag-5-grey", + "rule" : ".action-flag-5-grey", + "hash" : "3471ceb4994112b0a6e48eeb50ad8c90" + }, + "action-flag-5-white" : { + "name" : "action-flag-5-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-5", + "hash" : "d80426ed6dad58d6b557adc3b08a35c2" + }, + "action-flag-6" : { + "name" : "action-flag-6", + "rule" : ".action-flag-6", + "hash" : "02c3fb78cc75105605659578e75acfc3" + }, + "action-flag-6-grey" : { + "name" : "action-flag-6-grey", + "rule" : ".action-flag-6-grey", + "hash" : "8ab1cde8884759e77030c9343d177bdb" + }, + "action-flag-6-white" : { + "name" : "action-flag-6-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-6", + "hash" : "40bf7e2b36e70d02fab3cdf7e7eece36" + }, + "action-flag-7" : { + "name" : "action-flag-7", + "rule" : ".action-flag-7", + "hash" : "f4c757e27875d55e914608fecc190849" + }, + "action-flag-7-grey" : { + "name" : "action-flag-7-grey", + "rule" : ".action-flag-7-grey", + "hash" : "d16921bf53cd5142c7fea2177511bb9e" + }, + "action-flag-7-white" : { + "name" : "action-flag-7-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-7", + "hash" : "5972a5f1e3ecff9146727ebfb43c5956" + }, + "action-flag-ghost" : { + "name" : "action-flag-ghost", + "rule" : ".action-flag-ghost", + "hash" : "80d651f12e09ec81435612e06e28a2e2" + }, + "action-flag-ghost-grey" : { + "name" : "action-flag-ghost-grey", + "rule" : ".action-flag-ghost-grey", + "hash" : "6a5ee12fc2f0f7961e646c3a335e2703" + }, + "action-flag-ghost-white" : { + "name" : "action-flag-ghost-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag-ghost", + "hash" : "ff05197e8a66b1fb1037c93f3c52d866" + }, + "action-flag-grey" : { + "name" : "action-flag-grey", + "rule" : ".action-flag-grey", + "hash" : "cf991807516bcdd9c175463cba0ddf6d" + }, + "action-flag-white" : { + "name" : "action-flag-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-flag", + "hash" : "bb03676086c8af46377bb61593af0baa" + }, + "action-folder-open" : { + "name" : "action-folder-open", + "rule" : ".action-folder-open", + "hash" : "3626a7bee8e8e0f846c5bc1432cd21a7" + }, + "action-folder-open-grey" : { + "name" : "action-folder-open-grey", + "rule" : ".action-folder-open-grey", + "hash" : "5920e7bc4385d3efe46eb0e9ba28f828" + }, + "action-folder-open-white" : { + "name" : "action-folder-open-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-folder-open", + "hash" : "5ccf5cfa0f446a522e55f64fe3ceed76" + }, + "action-fork" : { + "name" : "action-fork", + "rule" : ".action-fork", + "hash" : "f2786a0553793e4eafd5088c325d3bf1" + }, + "action-fork-grey" : { + "name" : "action-fork-grey", + "rule" : ".action-fork-grey", + "hash" : "b21de87ac4434cc79360d7f1f86b9feb" + }, + "action-fork-white" : { + "name" : "action-fork-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-fork", + "hash" : "68f97284072a6ff630261af74629c884" + }, + "action-herald" : { + "name" : "action-herald", + "rule" : ".action-herald", + "hash" : "a09777d816e1c3ec7ca1f024413d853a" + }, + "action-herald-grey" : { + "name" : "action-herald-grey", + "rule" : ".action-herald-grey", + "hash" : "b091b3f6776f0620b77f7943e2723354" + }, + "action-herald-white" : { + "name" : "action-herald-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-herald", + "hash" : "a30bd0191721e4ab028338c4c7ebdfa8" + }, + "action-highlight" : { + "name" : "action-highlight", + "rule" : ".action-highlight", + "hash" : "c25f409ae6b43aa8edc28aac44bdb648" + }, + "action-highlight-grey" : { + "name" : "action-highlight-grey", + "rule" : ".action-highlight-grey", + "hash" : "0638dc63d844cd03441457999486e295" + }, + "action-highlight-white" : { + "name" : "action-highlight-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-highlight", + "hash" : "27e28bec94c1652eef5c556f23aa1dd6" + }, + "action-history" : { + "name" : "action-history", + "rule" : ".action-history", + "hash" : "2ce835c4d455cf7ebb7914c6387a29ab" + }, + "action-history-grey" : { + "name" : "action-history-grey", + "rule" : ".action-history-grey", + "hash" : "8685d466a6450d1055bb25782316af17" + }, + "action-history-white" : { + "name" : "action-history-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-history", + "hash" : "2c57ad5babe37b8335e88c5464c5529c" + }, + "action-image" : { + "name" : "action-image", + "rule" : ".action-image", + "hash" : "7e2d0b5937124146c8da254601d34d15" + }, + "action-image-grey" : { + "name" : "action-image-grey", + "rule" : ".action-image-grey", + "hash" : "cc5392a9d8deb9b3a30b370924635eb1" + }, + "action-image-white" : { + "name" : "action-image-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-image", + "hash" : "66ee76f5242792c0c274980df9bd9d58" + }, + "action-like" : { + "name" : "action-like", + "rule" : ".action-like", + "hash" : "f024649c9c2a82e0ad0afdd8884a2c7d" + }, + "action-like-grey" : { + "name" : "action-like-grey", + "rule" : ".action-like-grey", + "hash" : "a89fdf2f499e762b97f54c507715bde6" + }, + "action-like-white" : { + "name" : "action-like-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-like", + "hash" : "bd1a5fad4c83353e476378fc1d99c6e1" + }, + "action-link" : { + "name" : "action-link", + "rule" : ".action-link", + "hash" : "7c37d22aafdfd860b942d5fbcdc4975c" + }, + "action-link-grey" : { + "name" : "action-link-grey", + "rule" : ".action-link-grey", + "hash" : "8139d52194b607e8c73d5a2124a28329" + }, + "action-link-white" : { + "name" : "action-link-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-link", + "hash" : "157c08f843f6f30cf3561349f8e4ddbd" + }, + "action-lint-info" : { + "name" : "action-lint-info", + "rule" : ".action-lint-info", + "hash" : "65c2692a045b7446c4312e1b7331701d" + }, + "action-lint-info-grey" : { + "name" : "action-lint-info-grey", + "rule" : ".action-lint-info-grey", + "hash" : "4a0ca839249567756774af56977888cb" + }, + "action-lint-info-white" : { + "name" : "action-lint-info-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-info", + "hash" : "cf5a05749979f6701d4b3de53acca500" + }, + "action-lint-ok" : { + "name" : "action-lint-ok", + "rule" : ".action-lint-ok", + "hash" : "7637e89a5ed282988c0427b61abb56a0" + }, + "action-lint-ok-grey" : { + "name" : "action-lint-ok-grey", + "rule" : ".action-lint-ok-grey", + "hash" : "1c71c359debb765d73f1ee9b5b98ba3d" + }, + "action-lint-ok-white" : { + "name" : "action-lint-ok-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-ok", + "hash" : "faaa9e076d5012af17a73f9f09b6ede8" + }, + "action-lint-warning" : { + "name" : "action-lint-warning", + "rule" : ".action-lint-warning", + "hash" : "b79d4525ef1806bf0cb524a7e7490af7" + }, + "action-lint-warning-grey" : { + "name" : "action-lint-warning-grey", + "rule" : ".action-lint-warning-grey", + "hash" : "c522bb48f7d328b8230b5ecc2dac3d1f" + }, + "action-lint-warning-white" : { + "name" : "action-lint-warning-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-lint-warning", + "hash" : "4a13ffad1125caf3656a276e4c40c907" + }, + "action-lock" : { + "name" : "action-lock", + "rule" : ".action-lock", + "hash" : "943a4495056310f22bbbc2e64997ec74" + }, + "action-lock-grey" : { + "name" : "action-lock-grey", + "rule" : ".action-lock-grey", + "hash" : "514bd65df15aaeeb35148d8c673e8718" + }, + "action-lock-white" : { + "name" : "action-lock-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-lock", + "hash" : "1cd87a6ffac7f03535faa6109e69dcfa" + }, + "action-love" : { + "name" : "action-love", + "rule" : ".action-love", + "hash" : "498bcb15f80897b768762c540b51ff91" + }, + "action-love-grey" : { + "name" : "action-love-grey", + "rule" : ".action-love-grey", + "hash" : "07fa2968a8d447a20d0f5ae0f42fa454" + }, + "action-love-white" : { + "name" : "action-love-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-love", + "hash" : "3fe85e0ad08e6f0151765ab5ce5624b0" + }, + "action-merge" : { + "name" : "action-merge", + "rule" : ".action-merge", + "hash" : "c9ebe633aa17cc26cd454711e21e6686" + }, + "action-merge-grey" : { + "name" : "action-merge-grey", + "rule" : ".action-merge-grey", + "hash" : "028f56f351b8021fe526824230170a48" + }, + "action-merge-white" : { + "name" : "action-merge-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-merge", + "hash" : "334f751f7a9531af3e383bce06a0a2ff" + }, + "action-message" : { + "name" : "action-message", + "rule" : ".action-message", + "hash" : "33db2ccd98bcbbe6bf8fae278ad2c2fc" + }, + "action-message-grey" : { + "name" : "action-message-grey", + "rule" : ".action-message-grey", + "hash" : "306ee80f9f635f045ce15fe0c0a684c5" + }, + "action-message-white" : { + "name" : "action-message-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-message", + "hash" : "d7ad1f04ffcd3e96cee0d81af509e77c" + }, + "action-meta-mta" : { + "name" : "action-meta-mta", + "rule" : ".action-meta-mta", + "hash" : "bb8d824fef25830bda0929ae8e299147" + }, + "action-meta-mta-grey" : { + "name" : "action-meta-mta-grey", + "rule" : ".action-meta-mta-grey", + "hash" : "e3e3b26c8c55628b27f9342df865edbf" + }, + "action-meta-mta-white" : { + "name" : "action-meta-mta-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-meta-mta", + "hash" : "0455c2a3f7111e88daec4ddd68c9528a" + }, + "action-move" : { + "name" : "action-move", + "rule" : ".action-move", + "hash" : "4cb5767570d935747f9338b8da9399df" + }, + "action-move-grey" : { + "name" : "action-move-grey", + "rule" : ".action-move-grey", + "hash" : "d8bc3bdd62fc5dbc613875c9be75d7e1" + }, + "action-move-white" : { + "name" : "action-move-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-move", + "hash" : "eb654087894d3bc7229d17b221eafcf0" + }, + "action-new" : { + "name" : "action-new", + "rule" : ".action-new", + "hash" : "28a4a88aec75c601347d6dd0d9143de5" + }, + "action-new-grey" : { + "name" : "action-new-grey", + "rule" : ".action-new-grey", + "hash" : "724855bb4c8eae16593ae6fba5653f7a" + }, + "action-new-white" : { + "name" : "action-new-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-new", + "hash" : "21b047ec502a24eabe1f57fda5cd2fc1" + }, + "action-perflab" : { + "name" : "action-perflab", + "rule" : ".action-perflab", + "hash" : "4449e5eb4780114dbafbfe2c7be538de" + }, + "action-perflab-grey" : { + "name" : "action-perflab-grey", + "rule" : ".action-perflab-grey", + "hash" : "51414c80d753daa37f7deaa2cf4e5bc6" + }, + "action-perflab-white" : { + "name" : "action-perflab-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-perflab", + "hash" : "e00e31057d557047300da57a5d07837e" + }, + "action-preview" : { + "name" : "action-preview", + "rule" : ".action-preview", + "hash" : "069500f028ae272c474920785723247c" + }, + "action-preview-grey" : { + "name" : "action-preview-grey", + "rule" : ".action-preview-grey", + "hash" : "522f17cdaee1af29c3073e21eb1fb7a6" + }, + "action-preview-white" : { + "name" : "action-preview-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-preview", + "hash" : "c62768ba193052c527ce7d499fd9f662" + }, + "action-refresh" : { + "name" : "action-refresh", + "rule" : ".action-refresh", + "hash" : "ef02448a2a4cbe830b56d3cbd9444ffd" + }, + "action-refresh-grey" : { + "name" : "action-refresh-grey", + "rule" : ".action-refresh-grey", + "hash" : "24030ea198e22ed84891fa3698d891e4" + }, + "action-refresh-white" : { + "name" : "action-refresh-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-refresh", + "hash" : "7800f18fbd6dde59e2ae91d695002318" + }, + "action-remove" : { + "name" : "action-remove", + "rule" : ".action-remove", + "hash" : "69bf8194a7c539bdd6b7b8ad888d7260" + }, + "action-remove-grey" : { + "name" : "action-remove-grey", + "rule" : ".action-remove-grey", + "hash" : "41abfeb5561b52b686943ac4da8f0876" + }, + "action-remove-white" : { + "name" : "action-remove-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-remove", + "hash" : "24542d8d3890c8e89b7d60d0efd99e9c" + }, + "action-search" : { + "name" : "action-search", + "rule" : ".action-search", + "hash" : "8fbe318c0633c3de3ce6eb331f891d5c" + }, + "action-search-grey" : { + "name" : "action-search-grey", + "rule" : ".action-search-grey", + "hash" : "a58f5ea5770836de72f67a18b2a2d92b" + }, + "action-search-white" : { + "name" : "action-search-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-search", + "hash" : "1c1a7b4ac122c6ffa56edda3c7ce35b0" + }, + "action-start-sandcastle" : { + "name" : "action-start-sandcastle", + "rule" : ".action-start-sandcastle", + "hash" : "5aa74bb11fbc26b941f6fa0ed7507c64" + }, + "action-start-sandcastle-grey" : { + "name" : "action-start-sandcastle-grey", + "rule" : ".action-start-sandcastle-grey", + "hash" : "a65b85198bdbed8d5563c515d475316a" + }, + "action-start-sandcastle-white" : { + "name" : "action-start-sandcastle-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-start-sandcastle", + "hash" : "b99feb063a1e56833419119f426455f0" + }, + "action-subscribe-add" : { + "name" : "action-subscribe-add", + "rule" : ".action-subscribe-add", + "hash" : "5a47685848c39d5449b8ec0985a627e7" + }, + "action-subscribe-add-grey" : { + "name" : "action-subscribe-add-grey", + "rule" : ".action-subscribe-add-grey", + "hash" : "a691ac944079cee6655ff9f4ab321de3" + }, + "action-subscribe-add-white" : { + "name" : "action-subscribe-add-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-add", + "hash" : "1173fbd24131329e2e0c81893c1bd412" + }, + "action-subscribe-auto" : { + "name" : "action-subscribe-auto", + "rule" : ".action-subscribe-auto", + "hash" : "01f6ea8fb35628abe6641b6e88c27c1e" + }, + "action-subscribe-auto-grey" : { + "name" : "action-subscribe-auto-grey", + "rule" : ".action-subscribe-auto-grey", + "hash" : "b956dec1b5ae1d9ae6addffb3aa77a7f" + }, + "action-subscribe-auto-white" : { + "name" : "action-subscribe-auto-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-auto", + "hash" : "8525c0d691c327ddb0500cc27bfa9822" + }, + "action-subscribe-delete" : { + "name" : "action-subscribe-delete", + "rule" : ".action-subscribe-delete", + "hash" : "0d91e4d61349e9e1b7141fdc8d333d84" + }, + "action-subscribe-delete-grey" : { + "name" : "action-subscribe-delete-grey", + "rule" : ".action-subscribe-delete-grey", + "hash" : "16895241e0f9e62610c99e940ee3bcbc" + }, + "action-subscribe-delete-white" : { + "name" : "action-subscribe-delete-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-subscribe-delete", + "hash" : "e9d5f98355e04b3404706581f6597569" + }, + "action-tag" : { + "name" : "action-tag", + "rule" : ".action-tag", + "hash" : "d4b219d1272879dd50621439e1f33a72" + }, + "action-tag-grey" : { + "name" : "action-tag-grey", + "rule" : ".action-tag-grey", + "hash" : "08507569a675ef6cc85b17870f9f2e91" + }, + "action-tag-white" : { + "name" : "action-tag-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-tag", + "hash" : "aed3d83123f33e69ae4b7338b23f7c9c" + }, + "action-transcript" : { + "name" : "action-transcript", + "rule" : ".action-transcript", + "hash" : "055b6b1a2999d017fcf87f96c2796c49" + }, + "action-transcript-grey" : { + "name" : "action-transcript-grey", + "rule" : ".action-transcript-grey", + "hash" : "81f66da48452c5235aa9d84edd7831d3" + }, + "action-transcript-white" : { + "name" : "action-transcript-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-transcript", + "hash" : "e56f623fdf8f059bb80c24944dec6af6" + }, + "action-undo" : { + "name" : "action-undo", + "rule" : ".action-undo", + "hash" : "8f8586333203f466a681b0721cf1b57b" + }, + "action-undo-grey" : { + "name" : "action-undo-grey", + "rule" : ".action-undo-grey", + "hash" : "961216a677dc6c38afe2d4e729417bfb" + }, + "action-undo-white" : { + "name" : "action-undo-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-undo", + "hash" : "97bd8f43a4db2a97d53975ce42a6232d" + }, + "action-unlock" : { + "name" : "action-unlock", + "rule" : ".action-unlock", + "hash" : "f9d34e15f51777198f307d63d635e1ac" + }, + "action-unlock-grey" : { + "name" : "action-unlock-grey", + "rule" : ".action-unlock-grey", + "hash" : "4e7908dc34c83a6b8dab8c4dd554a98a" + }, + "action-unlock-white" : { + "name" : "action-unlock-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-unlock", + "hash" : "ceb342bc0a17310cf58c90fd3bb53ce1" + }, + "action-unmerge" : { + "name" : "action-unmerge", + "rule" : ".action-unmerge", + "hash" : "f994dd276cab26c3d5968d0b946dd8bc" + }, + "action-unmerge-grey" : { + "name" : "action-unmerge-grey", + "rule" : ".action-unmerge-grey", + "hash" : "3a82fed2967d8a9d5fe9651c38055db7" + }, + "action-unmerge-white" : { + "name" : "action-unmerge-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-unmerge", + "hash" : "574e4176d9c2243050958182e487f239" + }, + "action-unpublish" : { + "name" : "action-unpublish", + "rule" : ".action-unpublish", + "hash" : "c2241706bf6857b24ba1739a2fe281b1" + }, + "action-unpublish-grey" : { + "name" : "action-unpublish-grey", + "rule" : ".action-unpublish-grey", + "hash" : "5c9e548386c85d63f7f21699ba54813e" + }, + "action-unpublish-white" : { + "name" : "action-unpublish-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-unpublish", + "hash" : "a37305e8ea29bc41d83d6b5a11aebe9f" + }, + "action-warning" : { + "name" : "action-warning", + "rule" : ".action-warning", + "hash" : "1c0c7f76a2c43af5532f67f0f8622d7c" + }, + "action-warning-grey" : { + "name" : "action-warning-grey", + "rule" : ".action-warning-grey", + "hash" : "5dc7b0cd75e629ad91437b15901d990a" + }, + "action-warning-white" : { + "name" : "action-warning-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-warning", + "hash" : "c30c2e287bab73ca454712de6cbe2502" + }, + "action-world" : { + "name" : "action-world", + "rule" : ".action-world", + "hash" : "ae2bf28bf07aab51f54c1ea9beed10cb" + }, + "action-world-grey" : { + "name" : "action-world-grey", + "rule" : ".action-world-grey", + "hash" : "8d332d48b945f152aaf84a7ca83cfbc2" + }, + "action-world-white" : { + "name" : "action-world-white", + "rule" : ".device-desktop .phabricator-action-view:hover .action-world", + "hash" : "401df878395c514a443720a8acd1ab63" + }, + "remarkup-assist-text_b" : { + "name" : "remarkup-assist-text_b", + "rule" : ".remarkup-assist-b", + "hash" : "12c565d4934f6a777c9524baf75cebb6" + }, + "remarkup-assist-text_code" : { + "name" : "remarkup-assist-text_code", + "rule" : ".remarkup-assist-code", + "hash" : "f06f106cb8edb67e8b99d159d704a61a" + }, + "remarkup-assist-text_help" : { + "name" : "remarkup-assist-text_help", + "rule" : ".remarkup-assist-help", + "hash" : "9d54d8224b81de8e3ed7beac0e486257" + }, + "remarkup-assist-text_i" : { + "name" : "remarkup-assist-text_i", + "rule" : ".remarkup-assist-i", + "hash" : "50f83a53f5b094d3d92b619d06fada3c" + }, + "remarkup-assist-text_image" : { + "name" : "remarkup-assist-text_image", + "rule" : ".remarkup-assist-image", + "hash" : "c2869e71cc7cb6178598cd41a19ababb" + }, + "remarkup-assist-text_larger" : { + "name" : "remarkup-assist-text_larger", + "rule" : ".remarkup-assist-larger", + "hash" : "d3165f15a1b3734e4b7088f7b74330ba" + }, + "remarkup-assist-text_meme" : { + "name" : "remarkup-assist-text_meme", + "rule" : ".remarkup-assist-meme", + "hash" : "ed9c4166858ca1caedf5f8e4b8ad587e" + }, + "remarkup-assist-text_ol" : { + "name" : "remarkup-assist-text_ol", + "rule" : ".remarkup-assist-ol", + "hash" : "266b858f5ffc42760fb2e12913a5198a" + }, + "remarkup-assist-text_table" : { + "name" : "remarkup-assist-text_table", + "rule" : ".remarkup-assist-table", + "hash" : "5c2961b35460b3b5b7efdd5bc4e318ca" + }, + "remarkup-assist-text_tag" : { + "name" : "remarkup-assist-text_tag", + "rule" : ".remarkup-assist-tag", + "hash" : "165bd3a4de8d54cf720db9bc64116d25" + }, + "remarkup-assist-text_tt" : { + "name" : "remarkup-assist-text_tt", + "rule" : ".remarkup-assist-tt", + "hash" : "c07e6816500c9cd66fa27758cc902195" + }, + "remarkup-assist-text_ul" : { + "name" : "remarkup-assist-text_ul", + "rule" : ".remarkup-assist-ul", + "hash" : "26f55c0fcf9148879e3fb058ac319100" + } + }, + "scales" : [ + 1, + 2 + ], + "header" : "\/**\n * @provides sprite-icon-css\n * @generated\n *\/\n\n.sprite-icon {\n background-image: url(\/rsrc\/image\/sprite-icon.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n .sprite-icon {\n background-image: url(\/rsrc\/image\/sprite-icon-X2.png);\n background-size: {X}px {Y}px;\n }\n}" } diff --git a/resources/sprite/manifest/menu.json b/resources/sprite/manifest/menu.json new file mode 100644 index 0000000000..245e291697 --- /dev/null +++ b/resources/sprite/manifest/menu.json @@ -0,0 +1,35 @@ +{ + "version" : 1, + "sprites" : { + "bubble" : { + "name" : "bubble", + "rule" : ".phabricator-main-menu-alert-bubble.alert-unread", + "hash" : "07bc6fd60e5c2fa14558c9101cba5261" + }, + "round_bubble" : { + "name" : "round_bubble", + "rule" : ".phabricator-main-menu-alert-bubble", + "hash" : "02de5b1c1720749a566e7a4cf7c2216c" + }, + "seen_have_unread" : { + "name" : "seen_have_unread", + "rule" : ".alert-notifications:hover .phabricator-main-menu-alert-icon", + "hash" : "d0210b3908193ee841db2eeec264a154" + }, + "seen_read_all" : { + "name" : "seen_read_all", + "rule" : ".alert-notifications .phabricator-main-menu-alert-icon", + "hash" : "8d0644ec8fa33330b30b7531272e24f1" + }, + "unseen_any" : { + "name" : "unseen_any", + "rule" : ".alert-notifications.alert-unread .phabricator-main-menu-alert-icon", + "hash" : "0e50bf01f640b2f8231eaef246863f0b" + } + }, + "scales" : [ + 1, + 2 + ], + "header" : "\/**\n * @provides sprite-menu-css\n * @generated\n *\/\n\n.sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n .sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu-X2.png);\n background-size: {X}px {Y}px;\n }\n}" +} diff --git a/resources/sprite/notifications_1x/bubble.png b/resources/sprite/notifications_1x/bubble.png new file mode 100644 index 0000000000..a6c047cb42 Binary files /dev/null and b/resources/sprite/notifications_1x/bubble.png differ diff --git a/resources/sprite/notifications_1x/round_bubble.png b/resources/sprite/notifications_1x/round_bubble.png new file mode 100644 index 0000000000..2d2fce1f37 Binary files /dev/null and b/resources/sprite/notifications_1x/round_bubble.png differ diff --git a/resources/sprite/notifications_1x/seen_have_unread.png b/resources/sprite/notifications_1x/seen_have_unread.png new file mode 100644 index 0000000000..f07716bd9e Binary files /dev/null and b/resources/sprite/notifications_1x/seen_have_unread.png differ diff --git a/resources/sprite/notifications_1x/seen_read_all.png b/resources/sprite/notifications_1x/seen_read_all.png new file mode 100644 index 0000000000..db8cdb8b66 Binary files /dev/null and b/resources/sprite/notifications_1x/seen_read_all.png differ diff --git a/resources/sprite/notifications_1x/unseen_any.png b/resources/sprite/notifications_1x/unseen_any.png new file mode 100644 index 0000000000..f645cd32b3 Binary files /dev/null and b/resources/sprite/notifications_1x/unseen_any.png differ diff --git a/resources/sprite/notifications_2x/bubble.png b/resources/sprite/notifications_2x/bubble.png new file mode 100644 index 0000000000..f09dca68b2 Binary files /dev/null and b/resources/sprite/notifications_2x/bubble.png differ diff --git a/resources/sprite/notifications_2x/round_bubble.png b/resources/sprite/notifications_2x/round_bubble.png new file mode 100644 index 0000000000..0837ba4b7e Binary files /dev/null and b/resources/sprite/notifications_2x/round_bubble.png differ diff --git a/resources/sprite/notifications_2x/seen_have_unread.png b/resources/sprite/notifications_2x/seen_have_unread.png new file mode 100644 index 0000000000..af875015f7 Binary files /dev/null and b/resources/sprite/notifications_2x/seen_have_unread.png differ diff --git a/resources/sprite/notifications_2x/seen_read_all.png b/resources/sprite/notifications_2x/seen_read_all.png new file mode 100644 index 0000000000..f490620930 Binary files /dev/null and b/resources/sprite/notifications_2x/seen_read_all.png differ diff --git a/resources/sprite/notifications_2x/unseen_any.png b/resources/sprite/notifications_2x/unseen_any.png new file mode 100644 index 0000000000..d2a7d2617c Binary files /dev/null and b/resources/sprite/notifications_2x/unseen_any.png differ diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php index 0a101eed4a..a53e4c3faf 100755 --- a/scripts/celerity/generate_sprites.php +++ b/scripts/celerity/generate_sprites.php @@ -1,204 +1,223 @@ #!/usr/bin/env php setTagline('regenerate CSS sprite sheets'); $args->setSynopsis(<<parseStandardArguments(); $args->parse( array( array( 'name' => 'source', 'param' => 'directory', 'help' => 'Directory with sprite sources.', - ) + ), + array( + 'name' => 'force', + 'help' => 'Force regeneration even if sources have not changed.', + ), )); $srcroot = $args->getArg('source'); if (!$srcroot) { throw new Exception( "You must specify a source directory with '--source'."); } $root = dirname(phutil_get_library_root('phabricator')); $webroot = $root.'/webroot/rsrc'; $webroot = Filesystem::readablePath($webroot); function glx($x) { return (60 + (48 * $x)); } function gly($y) { return (110 + (48 * $y)); } $sheet = new PhutilSpriteSheet(); $at = '@'; $sheet->setCSSHeader(<<setSourceFile($srcroot.'/menu_normal_1x.png') ->setSourceSize(30, 30); $menu_hover_template = id(new PhutilSprite()) ->setSourceFile($srcroot.'/menu_hover_1x.png') ->setSourceSize(30, 30); $menu_selected_template = id(new PhutilSprite()) ->setSourceFile($srcroot.'/menu_selected_1x.png') ->setSourceSize(30, 30); $menu_map = array( '' => $menu_normal_template, '-selected' => $menu_selected_template, ':hover' => $menu_hover_template, ); $icon_map = array( 'help' => array(4, 19), 'settings' => array(0, 28), 'logout' => array(3, 6), - 'notifications' => array(5, 20), 'task' => array(1, 15), ); foreach ($icon_map as $icon => $coords) { list($x, $y) = $coords; foreach ($menu_map as $suffix => $template) { $sheet->addSprite( id(clone $template) ->setSourcePosition(glx($x), gly($y)) ->setTargetCSS('.main-menu-item-icon-'.$icon.$suffix)); } } $app_template_large = id(new PhutilSprite()) ->setSourceFile($srcroot.'/application_large_1x.png') ->setSourceSize(60, 60); $app_template_large_hover = id(new PhutilSprite()) ->setSourceFile($srcroot.'/application_large_hover_1x.png') ->setSourceSize(60, 60); $app_template_small = id(new PhutilSprite()) ->setSourceFile($srcroot.'/menu_normal_1x.png') ->setSourceSize(30, 30); $app_template_small_hover = id(new PhutilSprite()) ->setSourceFile($srcroot.'/menu_hover_1x.png') ->setSourceSize(30, 30); $app_template_small_selected = id(new PhutilSprite()) ->setSourceFile($srcroot.'/menu_selected_1x.png') ->setSourceSize(30, 30); $app_source_map = array( '-large' => array($app_template_large, 2), // For the application launch view, we only show hover state on the desktop // because it looks glitchy on touch devices. We show the hover state when // the surrounding is hovered, not the icon itself. '-large /* hover */' => array( $app_template_large_hover, 2, '.device-desktop .phabricator-application-launch-container:hover '), '' => array($app_template_small, 1), // Show hover state only for the desktop. ':hover' => array( $app_template_small_hover, 1, '.device-desktop ', ), '-selected' => array($app_template_small_selected, 1), ); $app_map = array( 'differential' => array(9, 1), 'fact' => array(2, 4), 'mail' => array(0, 1), 'diffusion' => array(7, 13), 'slowvote' => array(1, 4), 'phriction' => array(1, 7), 'maniphest' => array(3, 24), 'flags' => array(6, 26), 'settings' => array(9, 11), 'applications' => array(0, 34), 'default' => array(9, 9), 'people' => array(3, 0), 'ponder' => array(4, 35), 'calendar' => array(5, 4), 'files' => array(6, 3), 'projects' => array(7, 35), 'daemons' => array(7, 6), 'herald' => array(1, 5), 'countdown' => array(7, 5), 'conduit' => array(7, 30), 'feed' => array(3, 11), 'paste' => array(9, 2), 'audit' => array(8, 19), 'uiexample' => array(7, 28), 'phpast' => array(6, 31), 'owners' => array(5, 32), 'phid' => array(9, 25), 'diviner' => array(1, 35), 'repositories' => array(8, 13), 'phame' => array(8, 4), 'macro' => array(0, 31), 'releeph' => array(5, 18), 'drydock' => array(5, 25), ); $xadj = -1; foreach ($app_map as $icon => $coords) { list($x, $y) = $coords; foreach ($app_source_map as $suffix => $spec) { list($template, $scale) = $spec; if (isset($spec[2])) { $prefix = $spec[2]; } else { $prefix = ''; } $sheet->addSprite( id(clone $template) ->setSourcePosition(($xadj + glx($x)) * $scale, gly($y) * $scale) ->setTargetCSS($prefix.'.app-'.$icon.$suffix)); } } $sheet->generateImage($webroot.'/image/autosprite.png'); $sheet->generateCSS($webroot.'/css/autosprite.css'); /* -( Icons Sheet )-------------------------------------------------------- */ $generator = new CeleritySpriteGenerator(); -$generator - ->buildIconSheet() - ->setScales(array(1, 2)) - ->generateImage($webroot.'/image/sprite-icon.png', 1) - ->generateImage($webroot.'/image/sprite-icon-X2.png', 2) - ->generateCSS($webroot.'/css/sprite-icon.css') - ->generateManifest($root.'/resources/sprite/manifest/icon.json'); +$sheets = array( + 'icon' => $generator->buildIconSheet(), + 'menu' => $generator->buildMenuSheet(), +); + +foreach ($sheets as $name => $sheet) { + $manifest_path = $root.'/resources/sprite/manifest/'.$name.'.json'; + if (!$args->getArg('force')) { + if (Filesystem::pathExists($manifest_path)) { + $data = Filesystem::readFile($manifest_path); + $data = json_decode($data, true); + if (!$sheet->needsRegeneration($data)) { + continue; + } + } + } + + $sheet + ->generateImage($webroot."/image/sprite-{$name}.png", 1) + ->generateImage($webroot."/image/sprite-{$name}-X2.png", 2) + ->generateCSS($webroot."/css/sprite-{$name}.css") + ->generateManifest($root."/resources/sprite/manifest/{$name}.json"); +} echo "Done.\n"; diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index a57c849851..c6285acfc8 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -1,3507 +1,3530 @@ array( 'hash' => '89ac510efefeffb048a3d7e85161b7b6', 'uri' => '/res/89ac510e/rsrc/image/2x/header_logo.png', 'disk' => '/rsrc/image/2x/header_logo.png', 'type' => 'png', ), '/rsrc/image/apps.png' => array( 'hash' => 'f7cb4abeb73245fea4098a02fd784653', 'uri' => '/res/f7cb4abe/rsrc/image/apps.png', 'disk' => '/rsrc/image/apps.png', 'type' => 'png', ), '/rsrc/image/appstatus_empty.png' => array( 'hash' => '2f8102e0a0f5a0980d87d4ab4ba8c8fd', 'uri' => '/res/2f8102e0/rsrc/image/appstatus_empty.png', 'disk' => '/rsrc/image/appstatus_empty.png', 'type' => 'png', ), '/rsrc/image/appstatus_info.png' => array( 'hash' => '407de6daf2edc4a8b68e2e369f4fc8cb', 'uri' => '/res/407de6da/rsrc/image/appstatus_info.png', 'disk' => '/rsrc/image/appstatus_info.png', 'type' => 'png', ), '/rsrc/image/appstatus_needs.png' => array( 'hash' => '2c1e193bc786ca4fca0b851ed9cd3d92', 'uri' => '/res/2c1e193b/rsrc/image/appstatus_needs.png', 'disk' => '/rsrc/image/appstatus_needs.png', 'type' => 'png', ), '/rsrc/image/appstatus_okay.png' => array( 'hash' => 'd00e683ee1c61d0ccced1200775cdbb5', 'uri' => '/res/d00e683e/rsrc/image/appstatus_okay.png', 'disk' => '/rsrc/image/appstatus_okay.png', 'type' => 'png', ), '/rsrc/image/autosprite.png' => array( - 'hash' => '0b1fd04e70272fe946dff765237d132a', - 'uri' => '/res/0b1fd04e/rsrc/image/autosprite.png', + 'hash' => '7d4b49765c805bad0e2b59c0b578d975', + 'uri' => '/res/7d4b4976/rsrc/image/autosprite.png', 'disk' => '/rsrc/image/autosprite.png', 'type' => 'png', ), '/rsrc/image/avatar.png' => array( 'hash' => '1c5f255071537f05406adee86717ff27', 'uri' => '/res/1c5f2550/rsrc/image/avatar.png', 'disk' => '/rsrc/image/avatar.png', 'type' => 'png', ), '/rsrc/image/button_apps.png' => array( 'hash' => 'cc29f793afd01b15af613562225118f3', 'uri' => '/res/cc29f793/rsrc/image/button_apps.png', 'disk' => '/rsrc/image/button_apps.png', 'type' => 'png', ), '/rsrc/image/button_content.png' => array( 'hash' => '87cc5797352097b4b3d7541e6c46f032', 'uri' => '/res/87cc5797/rsrc/image/button_content.png', 'disk' => '/rsrc/image/button_content.png', 'type' => 'png', ), '/rsrc/image/button_gradients.png' => array( 'hash' => '9157bc3cc3321e0d04e94532dfe50ce7', 'uri' => '/res/9157bc3c/rsrc/image/button_gradients.png', 'disk' => '/rsrc/image/button_gradients.png', 'type' => 'png', ), '/rsrc/image/button_menu.png' => array( 'hash' => '5742857c7734d9d25be1125f5737fe0e', 'uri' => '/res/5742857c/rsrc/image/button_menu.png', 'disk' => '/rsrc/image/button_menu.png', 'type' => 'png', ), '/rsrc/image/checker_dark.png' => array( 'hash' => '640f795343df76ebe5409aae6187e57f', 'uri' => '/res/640f7953/rsrc/image/checker_dark.png', 'disk' => '/rsrc/image/checker_dark.png', 'type' => 'png', ), '/rsrc/image/checker_light.png' => array( 'hash' => '7f8f3ef8beb0f2cc4cc69efb9e1c3308', 'uri' => '/res/7f8f3ef8/rsrc/image/checker_light.png', 'disk' => '/rsrc/image/checker_light.png', 'type' => 'png', ), '/rsrc/image/credit_cards.png' => array( 'hash' => '681448de424ea159b6ea68af04c046ae', 'uri' => '/res/681448de/rsrc/image/credit_cards.png', 'disk' => '/rsrc/image/credit_cards.png', 'type' => 'png', ), '/rsrc/image/divot.png' => array( 'hash' => '3be267bd11ea375bf68e808893718e0e', 'uri' => '/res/3be267bd/rsrc/image/divot.png', 'disk' => '/rsrc/image/divot.png', 'type' => 'png', ), '/rsrc/image/grippy_texture.png' => array( 'hash' => 'a8945e12ceeaddd5b491a8d81cfa19c1', 'uri' => '/res/a8945e12/rsrc/image/grippy_texture.png', 'disk' => '/rsrc/image/grippy_texture.png', 'type' => 'png', ), '/rsrc/image/header_logo.png' => array( 'hash' => '96a289484c7a0e2bf1553e422f4d33bd', 'uri' => '/res/96a28948/rsrc/image/header_logo.png', 'disk' => '/rsrc/image/header_logo.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/arrow_branch.png' => array( 'hash' => 'f27b67520766e3d971722bcff703f3a8', 'uri' => '/res/f27b6752/rsrc/image/icon/fatcow/arrow_branch.png', 'disk' => '/rsrc/image/icon/fatcow/arrow_branch.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/arrow_merge.png' => array( 'hash' => 'c4bd97f3b1257439e2123ef69d2194d0', 'uri' => '/res/c4bd97f3/rsrc/image/icon/fatcow/arrow_merge.png', 'disk' => '/rsrc/image/icon/fatcow/arrow_merge.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/bullet_black.png' => array( 'hash' => '718f9c560a13766796f1be7dfaadeeab', 'uri' => '/res/718f9c56/rsrc/image/icon/fatcow/bullet_black.png', 'disk' => '/rsrc/image/icon/fatcow/bullet_black.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/bullet_orange.png' => array( 'hash' => 'c3bf91b65baacb27f2af143ab9180119', 'uri' => '/res/c3bf91b6/rsrc/image/icon/fatcow/bullet_orange.png', 'disk' => '/rsrc/image/icon/fatcow/bullet_orange.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/bullet_red.png' => array( 'hash' => '00273e4aa6ea3de630295610d6c9560c', 'uri' => '/res/00273e4a/rsrc/image/icon/fatcow/bullet_red.png', 'disk' => '/rsrc/image/icon/fatcow/bullet_red.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/calendar_edit.png' => array( 'hash' => 'de249c0f4f37bf5b2c69ff39ec5573fb', 'uri' => '/res/de249c0f/rsrc/image/icon/fatcow/calendar_edit.png', 'disk' => '/rsrc/image/icon/fatcow/calendar_edit.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/document_black.png' => array( 'hash' => '44d65a7f05a9c921719deedc160d68f7', 'uri' => '/res/44d65a7f/rsrc/image/icon/fatcow/document_black.png', 'disk' => '/rsrc/image/icon/fatcow/document_black.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_blue.png' => array( 'hash' => '75a080492f900fbe489e4b27e403962b', 'uri' => '/res/75a08049/rsrc/image/icon/fatcow/flag_blue.png', 'disk' => '/rsrc/image/icon/fatcow/flag_blue.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_finish.png' => array( 'hash' => '4af11fc7fab8e4610cbc3c88a02d4f78', 'uri' => '/res/4af11fc7/rsrc/image/icon/fatcow/flag_finish.png', 'disk' => '/rsrc/image/icon/fatcow/flag_finish.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_ghost.png' => array( 'hash' => '14c9f30a37b43f276f27a27a924bf02d', 'uri' => '/res/14c9f30a/rsrc/image/icon/fatcow/flag_ghost.png', 'disk' => '/rsrc/image/icon/fatcow/flag_ghost.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_green.png' => array( 'hash' => 'fed01374cd396cb774872762dcc447e1', 'uri' => '/res/fed01374/rsrc/image/icon/fatcow/flag_green.png', 'disk' => '/rsrc/image/icon/fatcow/flag_green.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_orange.png' => array( 'hash' => '88008cb8bb99761a37e5a743e2455aeb', 'uri' => '/res/88008cb8/rsrc/image/icon/fatcow/flag_orange.png', 'disk' => '/rsrc/image/icon/fatcow/flag_orange.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_pink.png' => array( 'hash' => '2f199f06ffc3dfc81b7561a057e0bc33', 'uri' => '/res/2f199f06/rsrc/image/icon/fatcow/flag_pink.png', 'disk' => '/rsrc/image/icon/fatcow/flag_pink.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_purple.png' => array( 'hash' => '16358629dc86c39550b575586eb5df80', 'uri' => '/res/16358629/rsrc/image/icon/fatcow/flag_purple.png', 'disk' => '/rsrc/image/icon/fatcow/flag_purple.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_red.png' => array( 'hash' => '210c28b4d93c439a499f5814f5e05772', 'uri' => '/res/210c28b4/rsrc/image/icon/fatcow/flag_red.png', 'disk' => '/rsrc/image/icon/fatcow/flag_red.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/flag_yellow.png' => array( 'hash' => 'bdfd73744a80bb80329ae50bc8a5f962', 'uri' => '/res/bdfd7374/rsrc/image/icon/fatcow/flag_yellow.png', 'disk' => '/rsrc/image/icon/fatcow/flag_yellow.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/folder.png' => array( 'hash' => '25e46cf9d210dde2242332296f79938c', 'uri' => '/res/25e46cf9/rsrc/image/icon/fatcow/folder.png', 'disk' => '/rsrc/image/icon/fatcow/folder.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/folder_go.png' => array( 'hash' => 'ba922ff7959309f51a14cb7ed5124d8b', 'uri' => '/res/ba922ff7/rsrc/image/icon/fatcow/folder_go.png', 'disk' => '/rsrc/image/icon/fatcow/folder_go.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/key_question.png' => array( 'hash' => '530a6448a4b91edec091a9292ccfd3d9', 'uri' => '/res/530a6448/rsrc/image/icon/fatcow/key_question.png', 'disk' => '/rsrc/image/icon/fatcow/key_question.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/link.png' => array( 'hash' => 'be1bea49b216548433014f3324902928', 'uri' => '/res/be1bea49/rsrc/image/icon/fatcow/link.png', 'disk' => '/rsrc/image/icon/fatcow/link.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/page_white_edit.png' => array( 'hash' => 'e7b7e7f2d9730bc80bc5c9eac1f3e36d', 'uri' => '/res/e7b7e7f2/rsrc/image/icon/fatcow/page_white_edit.png', 'disk' => '/rsrc/image/icon/fatcow/page_white_edit.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/page_white_link.png' => array( 'hash' => '1cfbad14412bda6c6f132dcc7c8725fd', 'uri' => '/res/1cfbad14/rsrc/image/icon/fatcow/page_white_link.png', 'disk' => '/rsrc/image/icon/fatcow/page_white_link.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/page_white_put.png' => array( 'hash' => 'bb7308aa5ac40137a8262da395a267fd', 'uri' => '/res/bb7308aa/rsrc/image/icon/fatcow/page_white_put.png', 'disk' => '/rsrc/image/icon/fatcow/page_white_put.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/page_white_text.png' => array( 'hash' => 'e47d590b626f617fb7d1d44e96e8fd11', 'uri' => '/res/e47d590b/rsrc/image/icon/fatcow/page_white_text.png', 'disk' => '/rsrc/image/icon/fatcow/page_white_text.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/conduit.png' => array( 'hash' => '1cae0656580aa3cd0b54b9d98306b1b9', 'uri' => '/res/1cae0656/rsrc/image/icon/fatcow/source/conduit.png', 'disk' => '/rsrc/image/icon/fatcow/source/conduit.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/email.png' => array( 'hash' => '93bdb3e168da1ed68f50c42125729d4e', 'uri' => '/res/93bdb3e1/rsrc/image/icon/fatcow/source/email.png', 'disk' => '/rsrc/image/icon/fatcow/source/email.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/fax.png' => array( 'hash' => 'd7dedf229841f2d041b347afd881596f', 'uri' => '/res/d7dedf22/rsrc/image/icon/fatcow/source/fax.png', 'disk' => '/rsrc/image/icon/fatcow/source/fax.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/mobile.png' => array( 'hash' => '786e7146d1e7d7318baf76c9d2baad97', 'uri' => '/res/786e7146/rsrc/image/icon/fatcow/source/mobile.png', 'disk' => '/rsrc/image/icon/fatcow/source/mobile.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/tablet.png' => array( 'hash' => '374cd40e4965be6b2fbdef4059d0ca05', 'uri' => '/res/374cd40e/rsrc/image/icon/fatcow/source/tablet.png', 'disk' => '/rsrc/image/icon/fatcow/source/tablet.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/source/web.png' => array( 'hash' => 'f4882a8f5619ba505ca033f72a340635', 'uri' => '/res/f4882a8f/rsrc/image/icon/fatcow/source/web.png', 'disk' => '/rsrc/image/icon/fatcow/source/web.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/default160x120.png' => array( 'hash' => '1b52ebd1fe0eee3ed0abfc382991b265', 'uri' => '/res/1b52ebd1/rsrc/image/icon/fatcow/thumbnails/default160x120.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/default160x120.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/default60x45.png' => array( 'hash' => '048d851d8d1daad4754e891e734c1899', 'uri' => '/res/048d851d/rsrc/image/icon/fatcow/thumbnails/default60x45.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/default60x45.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/image160x120.png' => array( 'hash' => '434acbd8dbbc2da9f09f6205a396eba1', 'uri' => '/res/434acbd8/rsrc/image/icon/fatcow/thumbnails/image160x120.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/image160x120.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/image60x45.png' => array( 'hash' => '29f7872dc53588fe0b8f0b330c7ee23a', 'uri' => '/res/29f7872d/rsrc/image/icon/fatcow/thumbnails/image60x45.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/image60x45.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png' => array( 'hash' => '39d2e22541658a3472ba41ae2fa548e5', 'uri' => '/res/39d2e225/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png' => array( 'hash' => 'b3572e9317cbed5184d12bdfabed2727', 'uri' => '/res/b3572e93/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/zip160x120.png' => array( 'hash' => 'e505108688a903b5cfb674707a289bcc', 'uri' => '/res/e5051086/rsrc/image/icon/fatcow/thumbnails/zip160x120.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip160x120.png', 'type' => 'png', ), '/rsrc/image/icon/fatcow/thumbnails/zip60x45.png' => array( 'hash' => 'f00716f4e8f7a95e70d43504f06be0a6', 'uri' => '/res/f00716f4/rsrc/image/icon/fatcow/thumbnails/zip60x45.png', 'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip60x45.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/close-2.png' => array( 'hash' => '72ff3ddcc1ed5d19a715ed6242114b53', 'uri' => '/res/72ff3ddc/rsrc/image/icon/lightbox/close-2.png', 'disk' => '/rsrc/image/icon/lightbox/close-2.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/close-hover-2.png' => array( 'hash' => '6ad4bd4a7820547a1d9041752546ba16', 'uri' => '/res/6ad4bd4a/rsrc/image/icon/lightbox/close-hover-2.png', 'disk' => '/rsrc/image/icon/lightbox/close-hover-2.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/left-arrow-2.png' => array( 'hash' => 'd84cbb0d42739f87b8f25b2f1d2f1153', 'uri' => '/res/d84cbb0d/rsrc/image/icon/lightbox/left-arrow-2.png', 'disk' => '/rsrc/image/icon/lightbox/left-arrow-2.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/left-arrow-hover-2.png' => array( 'hash' => 'cdf05f98fff3f390cd8df0c89894a3e1', 'uri' => '/res/cdf05f98/rsrc/image/icon/lightbox/left-arrow-hover-2.png', 'disk' => '/rsrc/image/icon/lightbox/left-arrow-hover-2.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/right-arrow-2.png' => array( 'hash' => '52021038cb6995c71f62a804bc2d420d', 'uri' => '/res/52021038/rsrc/image/icon/lightbox/right-arrow-2.png', 'disk' => '/rsrc/image/icon/lightbox/right-arrow-2.png', 'type' => 'png', ), '/rsrc/image/icon/lightbox/right-arrow-hover-2.png' => array( 'hash' => '65d5756b7b9cfcdeb2eb197a9aa6bbd2', 'uri' => '/res/65d5756b/rsrc/image/icon/lightbox/right-arrow-hover-2.png', 'disk' => '/rsrc/image/icon/lightbox/right-arrow-hover-2.png', 'type' => 'png', ), '/rsrc/image/icon/subscribe.png' => array( 'hash' => '5f47a4b17de245af39a4e7a097e40623', 'uri' => '/res/5f47a4b1/rsrc/image/icon/subscribe.png', 'disk' => '/rsrc/image/icon/subscribe.png', 'type' => 'png', ), '/rsrc/image/icon/tango/attachment.png' => array( 'hash' => '776fed2de89803fd8a0ba4b9deede230', 'uri' => '/res/776fed2d/rsrc/image/icon/tango/attachment.png', 'disk' => '/rsrc/image/icon/tango/attachment.png', 'type' => 'png', ), '/rsrc/image/icon/tango/edit.png' => array( 'hash' => 'c0028d99dcf4e9559bbf3c88ce2d8a8d', 'uri' => '/res/c0028d99/rsrc/image/icon/tango/edit.png', 'disk' => '/rsrc/image/icon/tango/edit.png', 'type' => 'png', ), '/rsrc/image/icon/tango/go-down.png' => array( 'hash' => '96862812cbb0445573c264dc057b8300', 'uri' => '/res/96862812/rsrc/image/icon/tango/go-down.png', 'disk' => '/rsrc/image/icon/tango/go-down.png', 'type' => 'png', ), '/rsrc/image/icon/tango/log.png' => array( 'hash' => 'a6f72499bef279ff6807a7dbc5148f1e', 'uri' => '/res/a6f72499/rsrc/image/icon/tango/log.png', 'disk' => '/rsrc/image/icon/tango/log.png', 'type' => 'png', ), '/rsrc/image/icon/tango/upload.png' => array( 'hash' => '8c11b63d6d99db3d7159c5d9a94e3062', 'uri' => '/res/8c11b63d/rsrc/image/icon/tango/upload.png', 'disk' => '/rsrc/image/icon/tango/upload.png', 'type' => 'png', ), '/rsrc/image/icon/unsubscribe.png' => array( 'hash' => '29429ad65aa3af50b072b32087057361', 'uri' => '/res/29429ad6/rsrc/image/icon/unsubscribe.png', 'disk' => '/rsrc/image/icon/unsubscribe.png', 'type' => 'png', ), '/rsrc/image/lines.png' => array( 'hash' => '0eb5778b34dd4fcee53b9924b88e0828', 'uri' => '/res/0eb5778b/rsrc/image/lines.png', 'disk' => '/rsrc/image/lines.png', 'type' => 'png', ), '/rsrc/image/loading.gif' => array( 'hash' => '664297671941142f37d8c89e717ff2ce', 'uri' => '/res/66429767/rsrc/image/loading.gif', 'disk' => '/rsrc/image/loading.gif', 'type' => 'gif', ), '/rsrc/image/main_texture.png' => array( 'hash' => 'e34d8143384721be73ec9b7532a977ab', 'uri' => '/res/e34d8143/rsrc/image/main_texture.png', 'disk' => '/rsrc/image/main_texture.png', 'type' => 'png', ), '/rsrc/image/menu_texture.png' => array( 'hash' => '42193f24a52bd94be596c442d59a68ce', 'uri' => '/res/42193f24/rsrc/image/menu_texture.png', 'disk' => '/rsrc/image/menu_texture.png', 'type' => 'png', ), '/rsrc/image/nyan.gif' => array( 'hash' => '03c40be4e004e6468d62b503756a587e', 'uri' => '/res/03c40be4/rsrc/image/nyan.gif', 'disk' => '/rsrc/image/nyan.gif', 'type' => 'gif', ), '/rsrc/image/search.png' => array( 'hash' => 'ff7da044e6f923b8f569dec11f97e5e5', 'uri' => '/res/ff7da044/rsrc/image/search.png', 'disk' => '/rsrc/image/search.png', 'type' => 'png', ), '/rsrc/image/sprite-icon-X2.png' => array( 'hash' => '2ed96382cab2930fb799a39e3f66f4f1', 'uri' => '/res/2ed96382/rsrc/image/sprite-icon-X2.png', 'disk' => '/rsrc/image/sprite-icon-X2.png', 'type' => 'png', ), '/rsrc/image/sprite-icon.png' => array( 'hash' => '3ad6f08b9770c3150a420d0ab67f6282', 'uri' => '/res/3ad6f08b/rsrc/image/sprite-icon.png', 'disk' => '/rsrc/image/sprite-icon.png', 'type' => 'png', ), + '/rsrc/image/sprite-menu-X2.png' => + array( + 'hash' => 'a7d32533fc67766ed44acc37bb1c8b64', + 'uri' => '/res/a7d32533/rsrc/image/sprite-menu-X2.png', + 'disk' => '/rsrc/image/sprite-menu-X2.png', + 'type' => 'png', + ), + '/rsrc/image/sprite-menu.png' => + array( + 'hash' => '0b2d293e89259d70aacb0c92a49e6a0c', + 'uri' => '/res/0b2d293e/rsrc/image/sprite-menu.png', + 'disk' => '/rsrc/image/sprite-menu.png', + 'type' => 'png', + ), '/rsrc/image/sprite.png' => array( 'hash' => '8c6200d3191c0deea30f22e7b8166b15', 'uri' => '/res/8c6200d3/rsrc/image/sprite.png', 'disk' => '/rsrc/image/sprite.png', 'type' => 'png', ), '/rsrc/swf/aphlict.swf' => array( 'hash' => '4b9a9d83bebaf254f3790e87b45c1f92', 'uri' => '/res/4b9a9d83/rsrc/swf/aphlict.swf', 'disk' => '/rsrc/swf/aphlict.swf', 'type' => 'swf', ), 'aphront-attached-file-view-css' => array( 'uri' => '/res/a6ca5487/rsrc/css/aphront/attached-file-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/attached-file-view.css', ), 'aphront-calendar-view-css' => array( 'uri' => '/res/31e92d4d/rsrc/css/aphront/calendar-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/calendar-view.css', ), 'aphront-contextbar-view-css' => array( 'uri' => '/res/9e0c2ed7/rsrc/css/aphront/context-bar.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/context-bar.css', ), 'aphront-crumbs-view-css' => array( 'uri' => '/res/699be12a/rsrc/css/aphront/crumbs-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/crumbs-view.css', ), 'aphront-dark-console-css' => array( 'uri' => '/res/1adffcf3/rsrc/css/aphront/dark-console.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/dark-console.css', ), 'aphront-dialog-view-css' => array( 'uri' => '/res/ae4f5352/rsrc/css/aphront/dialog-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/dialog-view.css', ), 'aphront-error-view-css' => array( 'uri' => '/res/410dbe72/rsrc/css/aphront/error-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/error-view.css', ), 'aphront-form-view-css' => array( 'uri' => '/res/c5c3105a/rsrc/css/aphront/form-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/form-view.css', ), 'aphront-headsup-action-list-view-css' => array( 'uri' => '/res/1dce0ad7/rsrc/css/aphront/headsup-action-list-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/headsup-action-list-view.css', ), 'aphront-headsup-view-css' => array( 'uri' => '/res/cf759e39/rsrc/css/aphront/headsup.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/headsup.css', ), 'aphront-list-filter-view-css' => array( 'uri' => '/res/0f5ddaba/rsrc/css/aphront/list-filter-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/list-filter-view.css', ), 'aphront-pager-view-css' => array( 'uri' => '/res/43fb79f0/rsrc/css/aphront/pager-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/pager-view.css', ), 'aphront-panel-view-css' => array( 'uri' => '/res/77bb2527/rsrc/css/aphront/panel-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/panel-view.css', ), 'aphront-request-failure-view-css' => array( 'uri' => '/res/c9a43002/rsrc/css/aphront/request-failure-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/request-failure-view.css', ), 'aphront-side-nav-view-css' => array( 'uri' => '/res/3e641619/rsrc/css/aphront/side-nav-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/side-nav-view.css', ), 'aphront-table-view-css' => array( 'uri' => '/res/732d5e1f/rsrc/css/aphront/table-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/table-view.css', ), 'aphront-tokenizer-control-css' => array( 'uri' => '/res/f4570596/rsrc/css/aphront/tokenizer.css', 'type' => 'css', 'requires' => array( 0 => 'aphront-typeahead-control-css', ), 'disk' => '/rsrc/css/aphront/tokenizer.css', ), 'aphront-tooltip-css' => array( 'uri' => '/res/e0fa3a98/rsrc/css/aphront/tooltip.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/tooltip.css', ), 'aphront-typeahead-control-css' => array( 'uri' => '/res/311e8830/rsrc/css/aphront/typeahead.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/typeahead.css', ), 'autosprite-css' => array( - 'uri' => '/res/e1084d7c/rsrc/css/autosprite.css', + 'uri' => '/res/dc17189f/rsrc/css/autosprite.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/autosprite.css', ), 'differential-changeset-view-css' => array( 'uri' => '/res/e26e4f76/rsrc/css/application/differential/changeset-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/changeset-view.css', ), 'differential-core-view-css' => array( 'uri' => '/res/7901260e/rsrc/css/application/differential/core.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/core.css', ), 'differential-inline-comment-editor' => array( 'uri' => '/res/1bc649b7/rsrc/js/application/differential/DifferentialInlineCommentEditor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-dom', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-install', 4 => 'javelin-request', 5 => 'javelin-workflow', ), 'disk' => '/rsrc/js/application/differential/DifferentialInlineCommentEditor.js', ), 'differential-local-commits-view-css' => array( 'uri' => '/res/8cdacd82/rsrc/css/application/differential/local-commits-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/local-commits-view.css', ), 'differential-results-table-css' => array( 'uri' => '/res/470b474d/rsrc/css/application/differential/results-table.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/results-table.css', ), 'differential-revision-add-comment-css' => array( 'uri' => '/res/849748d3/rsrc/css/application/differential/add-comment.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/add-comment.css', ), 'differential-revision-comment-css' => array( 'uri' => '/res/5e613a7f/rsrc/css/application/differential/revision-comment.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/revision-comment.css', ), 'differential-revision-comment-list-css' => array( 'uri' => '/res/3b31faa3/rsrc/css/application/differential/revision-comment-list.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/revision-comment-list.css', ), 'differential-revision-history-css' => array( 'uri' => '/res/0d7d515d/rsrc/css/application/differential/revision-history.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/revision-history.css', ), 'differential-revision-list-css' => array( 'uri' => '/res/7659ad8d/rsrc/css/application/differential/revision-list.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/revision-list.css', ), 'differential-table-of-contents-css' => array( 'uri' => '/res/0ac99a19/rsrc/css/application/differential/table-of-contents.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/differential/table-of-contents.css', ), 'diffusion-commit-view-css' => array( 'uri' => '/res/b445944e/rsrc/css/application/diffusion/commit-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/diffusion/commit-view.css', ), 'diffusion-icons-css' => array( 'uri' => '/res/b93e32c9/rsrc/css/application/diffusion/diffusion-icons.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/diffusion/diffusion-icons.css', ), 'diffusion-source-css' => array( 'uri' => '/res/6a28b429/rsrc/css/application/diffusion/diffusion-source.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/diffusion/diffusion-source.css', ), 'files-css' => array( 'uri' => '/res/a265a77d/rsrc/css/application/files/files.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/files/files.css', ), 'herald-css' => array( 'uri' => '/res/5051f3ab/rsrc/css/application/herald/herald.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/herald/herald.css', ), 'herald-rule-editor' => array( 'uri' => '/res/3a2979de/rsrc/js/application/herald/HeraldRuleEditor.js', 'type' => 'js', 'requires' => array( 0 => 'multirow-row-manager', 1 => 'javelin-install', 2 => 'javelin-typeahead', 3 => 'javelin-util', 4 => 'javelin-dom', 5 => 'javelin-tokenizer', 6 => 'javelin-typeahead-preloaded-source', 7 => 'javelin-stratcom', 8 => 'javelin-json', 9 => 'phabricator-prefab', ), 'disk' => '/rsrc/js/application/herald/HeraldRuleEditor.js', ), 'herald-test-css' => array( 'uri' => '/res/c0cd6bdb/rsrc/css/application/herald/herald-test.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/herald/herald-test.css', ), 'inline-comment-summary-css' => array( 'uri' => '/res/338704f7/rsrc/css/application/diff/inline-comment-summary.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/diff/inline-comment-summary.css', ), 'javelin-aphlict' => array( 'uri' => '/res/c0b9e53f/rsrc/js/application/aphlict/Aphlict.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'disk' => '/rsrc/js/application/aphlict/Aphlict.js', ), 'javelin-behavior' => array( 'uri' => '/res/ef4eda09/rsrc/js/javelin/lib/behavior.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-magical-init', ), 'disk' => '/rsrc/js/javelin/lib/behavior.js', ), 'javelin-behavior-aphlict-dropdown' => array( - 'uri' => '/res/dc8f194b/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js', + 'uri' => '/res/e9b6fd18/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-request', 2 => 'javelin-stratcom', 3 => 'javelin-vector', 4 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js', ), 'javelin-behavior-aphlict-listen' => array( 'uri' => '/res/6dde3f43/rsrc/js/application/aphlict/behavior-aphlict-listen.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-aphlict', 2 => 'javelin-stratcom', 3 => 'javelin-request', 4 => 'javelin-uri', 5 => 'javelin-dom', 6 => 'javelin-json', 7 => 'phabricator-notification', ), 'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-listen.js', ), 'javelin-behavior-aphront-basic-tokenizer' => array( 'uri' => '/res/cf049052/rsrc/js/application/core/behavior-tokenizer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'phabricator-prefab', ), 'disk' => '/rsrc/js/application/core/behavior-tokenizer.js', ), 'javelin-behavior-aphront-drag-and-drop' => array( 'uri' => '/res/0910fc0a/rsrc/js/application/core/behavior-drag-and-drop.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-drag-and-drop-file-upload', ), 'disk' => '/rsrc/js/application/core/behavior-drag-and-drop.js', ), 'javelin-behavior-aphront-drag-and-drop-textarea' => array( 'uri' => '/res/ad737ce4/rsrc/js/application/core/behavior-drag-and-drop-textarea.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-drag-and-drop-file-upload', 3 => 'phabricator-paste-file-upload', 4 => 'phabricator-textareautils', ), 'disk' => '/rsrc/js/application/core/behavior-drag-and-drop-textarea.js', ), 'javelin-behavior-aphront-form-disable-on-submit' => array( 'uri' => '/res/ca54e8b9/rsrc/js/application/core/behavior-form.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-form.js', ), 'javelin-behavior-aphront-more' => array( 'uri' => '/res/9ad83c3c/rsrc/js/application/core/behavior-more.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-more.js', ), 'javelin-behavior-audit-preview' => array( 'uri' => '/res/3048b073/rsrc/js/application/diffusion/behavior-audit-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/diffusion/behavior-audit-preview.js', ), 'javelin-behavior-countdown-timer' => array( 'uri' => '/res/7468acb7/rsrc/js/application/countdown/timer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', ), 'disk' => '/rsrc/js/application/countdown/timer.js', ), 'javelin-behavior-dark-console' => array( 'uri' => '/res/3269c0bb/rsrc/js/application/core/behavior-dark-console.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-request', 5 => 'phabricator-keyboard-shortcut', 6 => 'javelin-behavior-dark-console-ajax', ), 'disk' => '/rsrc/js/application/core/behavior-dark-console.js', ), 'javelin-behavior-dark-console-ajax' => array( 'uri' => '/res/ac3ab63a/rsrc/js/application/core/behavior-dark-console-ajax.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-dark-console-ajax.js', ), 'javelin-behavior-device' => array( 'uri' => '/res/b6bd0c33/rsrc/js/application/core/behavior-device.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-install', ), 'disk' => '/rsrc/js/application/core/behavior-device.js', ), 'javelin-behavior-differential-accept-with-errors' => array( 'uri' => '/res/ba5144c5/rsrc/js/application/differential/behavior-accept-with-errors.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/differential/behavior-accept-with-errors.js', ), 'javelin-behavior-differential-add-reviewers-and-ccs' => array( 'uri' => '/res/27be3f81/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-prefab', ), 'disk' => '/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js', ), 'javelin-behavior-differential-comment-jump' => array( 'uri' => '/res/b580229b/rsrc/js/application/differential/behavior-comment-jump.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-util', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/differential/behavior-comment-jump.js', ), 'javelin-behavior-differential-diff-radios' => array( 'uri' => '/res/004cb66f/rsrc/js/application/differential/behavior-diff-radios.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/differential/behavior-diff-radios.js', ), 'javelin-behavior-differential-dropdown-menus' => array( 'uri' => '/res/752f5dfc/rsrc/js/application/differential/behavior-dropdown-menus.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'phabricator-dropdown-menu', 5 => 'phabricator-menu-item', ), 'disk' => '/rsrc/js/application/differential/behavior-dropdown-menus.js', ), 'javelin-behavior-differential-edit-inline-comments' => array( 'uri' => '/res/70c1f3a3/rsrc/js/application/differential/behavior-edit-inline-comments.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-util', 4 => 'javelin-vector', 5 => 'differential-inline-comment-editor', ), 'disk' => '/rsrc/js/application/differential/behavior-edit-inline-comments.js', ), 'javelin-behavior-differential-feedback-preview' => array( 'uri' => '/res/5fbce8db/rsrc/js/application/differential/behavior-comment-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-request', 4 => 'javelin-util', 5 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/differential/behavior-comment-preview.js', ), 'javelin-behavior-differential-keyboard-navigation' => array( 'uri' => '/res/a7798465/rsrc/js/application/differential/behavior-keyboard-nav.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'phabricator-keyboard-shortcut', ), 'disk' => '/rsrc/js/application/differential/behavior-keyboard-nav.js', ), 'javelin-behavior-differential-populate' => array( 'uri' => '/res/781dd9a5/rsrc/js/application/differential/behavior-populate.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-workflow', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-stratcom', 5 => 'phabricator-tooltip', ), 'disk' => '/rsrc/js/application/differential/behavior-populate.js', ), 'javelin-behavior-differential-show-all-comments' => array( 'uri' => '/res/eaa12efc/rsrc/js/application/differential/behavior-show-all-comments.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/differential/behavior-show-all-comments.js', ), 'javelin-behavior-differential-show-field-details' => array( 'uri' => '/res/8d57f459/rsrc/js/application/differential/behavior-show-field-details.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/differential/behavior-show-field-details.js', ), 'javelin-behavior-differential-show-more' => array( 'uri' => '/res/88115daf/rsrc/js/application/differential/behavior-show-more.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-workflow', 3 => 'javelin-util', 4 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/differential/behavior-show-more.js', ), 'javelin-behavior-differential-toggle-files' => array( 'uri' => '/res/ae937207/rsrc/js/application/differential/behavior-toggle-files.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/differential/behavior-toggle-files.js', ), 'javelin-behavior-differential-user-select' => array( 'uri' => '/res/23c51a5d/rsrc/js/application/differential/behavior-user-select.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/differential/behavior-user-select.js', ), 'javelin-behavior-diffusion-commit-branches' => array( 'uri' => '/res/1ede335a/rsrc/js/application/diffusion/behavior-commit-branches.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-request', ), 'disk' => '/rsrc/js/application/diffusion/behavior-commit-branches.js', ), 'javelin-behavior-diffusion-commit-graph' => array( 'uri' => '/res/cfe336e8/rsrc/js/application/diffusion/behavior-commit-graph.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/diffusion/behavior-commit-graph.js', ), 'javelin-behavior-diffusion-jump-to' => array( 'uri' => '/res/7c42e1ba/rsrc/js/application/diffusion/behavior-jump-to.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-util', 2 => 'javelin-vector', 3 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/diffusion/behavior-jump-to.js', ), 'javelin-behavior-diffusion-line-linker' => array( 'uri' => '/res/d3cf5499/rsrc/js/application/diffusion/behavior-line-linker.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-uri', ), 'disk' => '/rsrc/js/application/diffusion/behavior-line-linker.js', ), 'javelin-behavior-diffusion-pull-lastmodified' => array( 'uri' => '/res/29fe2790/rsrc/js/application/diffusion/behavior-pull-lastmodified.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-request', ), 'disk' => '/rsrc/js/application/diffusion/behavior-pull-lastmodified.js', ), 'javelin-behavior-error-log' => array( 'uri' => '/res/f46289e9/rsrc/js/application/core/behavior-error-log.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-error-log.js', ), 'javelin-behavior-fancy-datepicker' => array( 'uri' => '/res/ae843244/rsrc/js/application/core/behavior-fancy-datepicker.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-stratcom', 4 => 'javelin-vector', ), 'disk' => '/rsrc/js/application/core/behavior-fancy-datepicker.js', ), 'javelin-behavior-files-drag-and-drop' => array( 'uri' => '/res/4893f577/rsrc/js/application/core/behavior-files-drag-and-drop.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-uri', 3 => 'phabricator-drag-and-drop-file-upload', ), 'disk' => '/rsrc/js/application/core/behavior-files-drag-and-drop.js', ), 'javelin-behavior-herald-rule-editor' => array( 'uri' => '/res/77a0c945/rsrc/js/application/herald/herald-rule-editor.js', 'type' => 'js', 'requires' => array( 0 => 'herald-rule-editor', 1 => 'javelin-behavior', ), 'disk' => '/rsrc/js/application/herald/herald-rule-editor.js', ), 'javelin-behavior-konami' => array( 'uri' => '/res/5f4b32fe/rsrc/js/application/core/behavior-konami.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/core/behavior-konami.js', ), 'javelin-behavior-lightbox-attachments' => array( 'uri' => '/res/5efba371/rsrc/js/application/core/behavior-lightbox-attachments.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-mask', 4 => 'javelin-util', 5 => 'phabricator-busy', ), 'disk' => '/rsrc/js/application/core/behavior-lightbox-attachments.js', ), 'javelin-behavior-line-chart' => array( 'uri' => '/res/1aa5ac88/rsrc/js/application/maniphest/behavior-line-chart.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-vector', ), 'disk' => '/rsrc/js/application/maniphest/behavior-line-chart.js', ), 'javelin-behavior-maniphest-batch-editor' => array( 'uri' => '/res/d22661be/rsrc/js/application/maniphest/behavior-batch-editor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-prefab', 4 => 'multirow-row-manager', 5 => 'javelin-json', ), 'disk' => '/rsrc/js/application/maniphest/behavior-batch-editor.js', ), 'javelin-behavior-maniphest-batch-selector' => array( 'uri' => '/res/398cf8d7/rsrc/js/application/maniphest/behavior-batch-selector.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/maniphest/behavior-batch-selector.js', ), 'javelin-behavior-maniphest-description-preview' => array( 'uri' => '/res/8acd6f07/rsrc/js/application/maniphest/behavior-task-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/maniphest/behavior-task-preview.js', ), 'javelin-behavior-maniphest-subpriority-editor' => array( 'uri' => '/res/5e02f19a/rsrc/js/application/maniphest/behavior-subpriorityeditor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-magical-init', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-stratcom', 5 => 'javelin-workflow', ), 'disk' => '/rsrc/js/application/maniphest/behavior-subpriorityeditor.js', ), 'javelin-behavior-maniphest-transaction-controls' => array( 'uri' => '/res/62465554/rsrc/js/application/maniphest/behavior-transaction-controls.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'phabricator-prefab', ), 'disk' => '/rsrc/js/application/maniphest/behavior-transaction-controls.js', ), 'javelin-behavior-maniphest-transaction-expand' => array( 'uri' => '/res/966410de/rsrc/js/application/maniphest/behavior-transaction-expand.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-workflow', 3 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/maniphest/behavior-transaction-expand.js', ), 'javelin-behavior-maniphest-transaction-preview' => array( 'uri' => '/res/855c9f0c/rsrc/js/application/maniphest/behavior-transaction-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-json', 4 => 'javelin-stratcom', 5 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/maniphest/behavior-transaction-preview.js', ), 'javelin-behavior-owners-path-editor' => array( 'uri' => '/res/9cf78ffc/rsrc/js/application/owners/owners-path-editor.js', 'type' => 'js', 'requires' => array( 0 => 'owners-path-editor', 1 => 'javelin-behavior', ), 'disk' => '/rsrc/js/application/owners/owners-path-editor.js', ), 'javelin-behavior-phabricator-active-nav' => array( 'uri' => '/res/f879d4dd/rsrc/js/application/core/behavior-active-nav.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-vector', 3 => 'javelin-dom', 4 => 'javelin-uri', ), 'disk' => '/rsrc/js/application/core/behavior-active-nav.js', ), 'javelin-behavior-phabricator-autofocus' => array( 'uri' => '/res/2946bb89/rsrc/js/application/core/behavior-autofocus.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-autofocus.js', ), 'javelin-behavior-phabricator-keyboard-pager' => array( 'uri' => '/res/56d64eff/rsrc/js/application/core/behavior-keyboard-pager.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-uri', 2 => 'phabricator-keyboard-shortcut', ), 'disk' => '/rsrc/js/application/core/behavior-keyboard-pager.js', ), 'javelin-behavior-phabricator-keyboard-shortcuts' => array( 'uri' => '/res/c5eb65cd/rsrc/js/application/core/behavior-keyboard-shortcuts.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-workflow', 2 => 'javelin-json', 3 => 'javelin-dom', 4 => 'phabricator-keyboard-shortcut', ), 'disk' => '/rsrc/js/application/core/behavior-keyboard-shortcuts.js', ), 'javelin-behavior-phabricator-nav' => array( 'uri' => '/res/3d04f9ab/rsrc/js/application/core/behavior-phabricator-nav.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'javelin-dom', 4 => 'javelin-magical-init', 5 => 'javelin-vector', 6 => 'javelin-util', 7 => 'javelin-fx', ), 'disk' => '/rsrc/js/application/core/behavior-phabricator-nav.js', ), 'javelin-behavior-phabricator-notification-example' => array( 'uri' => '/res/a6d51998/rsrc/js/application/uiexample/notification-example.js', 'type' => 'js', 'requires' => array( 0 => 'phabricator-notification', 1 => 'javelin-stratcom', 2 => 'javelin-behavior', 3 => 'javelin-uri', ), 'disk' => '/rsrc/js/application/uiexample/notification-example.js', ), 'javelin-behavior-phabricator-object-selector' => array( 'uri' => '/res/0c4b0d82/rsrc/js/application/core/behavior-object-selector.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-request', 3 => 'javelin-util', ), 'disk' => '/rsrc/js/application/core/behavior-object-selector.js', ), 'javelin-behavior-phabricator-oncopy' => array( 'uri' => '/res/f490b8d1/rsrc/js/application/core/behavior-oncopy.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-oncopy.js', ), 'javelin-behavior-phabricator-remarkup-assist' => array( 'uri' => '/res/8a4f3a35/rsrc/js/application/core/behavior-phabricator-remarkup-assist.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'phabricator-textareautils', ), 'disk' => '/rsrc/js/application/core/behavior-phabricator-remarkup-assist.js', ), 'javelin-behavior-phabricator-search-typeahead' => array( 'uri' => '/res/046ab274/rsrc/js/application/core/behavior-search-typeahead.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-typeahead-ondemand-source', 2 => 'javelin-typeahead', 3 => 'javelin-dom', 4 => 'javelin-uri', 5 => 'javelin-util', 6 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/application/core/behavior-search-typeahead.js', ), 'javelin-behavior-phabricator-tooltips' => array( 'uri' => '/res/e0b344c6/rsrc/js/application/core/behavior-tooltip.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-behavior-device', 2 => 'javelin-stratcom', 3 => 'phabricator-tooltip', ), 'disk' => '/rsrc/js/application/core/behavior-tooltip.js', ), 'javelin-behavior-phabricator-watch-anchor' => array( 'uri' => '/res/b20b1cc2/rsrc/js/application/core/behavior-watch-anchor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-vector', ), 'disk' => '/rsrc/js/application/core/behavior-watch-anchor.js', ), 'javelin-behavior-phame-post-preview' => array( 'uri' => '/res/ac4c503a/rsrc/js/application/phame/phame-post-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/phame/phame-post-preview.js', ), 'javelin-behavior-phriction-document-preview' => array( 'uri' => '/res/f1665ecd/rsrc/js/application/phriction/phriction-document-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/phriction/phriction-document-preview.js', ), 'javelin-behavior-ponder-feedback-preview' => array( 'uri' => '/res/2e802dd9/rsrc/js/application/ponder/behavior-comment-preview.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'phabricator-shaped-request', ), 'disk' => '/rsrc/js/application/ponder/behavior-comment-preview.js', ), 'javelin-behavior-ponder-votebox' => array( 'uri' => '/res/9d091af3/rsrc/js/application/ponder/behavior-votebox.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-util', 3 => 'javelin-stratcom', 4 => 'javelin-request', ), 'disk' => '/rsrc/js/application/ponder/behavior-votebox.js', ), 'javelin-behavior-project-create' => array( 'uri' => '/res/e91f3f8f/rsrc/js/application/projects/behavior-project-create.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-workflow', ), 'disk' => '/rsrc/js/application/projects/behavior-project-create.js', ), 'javelin-behavior-refresh-csrf' => array( 'uri' => '/res/6fd76d0f/rsrc/js/application/core/behavior-refresh-csrf.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-request', 1 => 'javelin-behavior', 2 => 'javelin-dom', 3 => 'phabricator-busy', ), 'disk' => '/rsrc/js/application/core/behavior-refresh-csrf.js', ), 'javelin-behavior-repository-crossreference' => array( 'uri' => '/res/244c5251/rsrc/js/application/repository/repository-crossreference.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-uri', ), 'disk' => '/rsrc/js/application/repository/repository-crossreference.js', ), 'javelin-behavior-stripe-payment-form' => array( 'uri' => '/res/87c7b043/rsrc/js/application/phortune/behavior-stripe-payment-form.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-json', 3 => 'stripe-core', ), 'disk' => '/rsrc/js/application/phortune/behavior-stripe-payment-form.js', ), 'javelin-behavior-toggle-class' => array( 'uri' => '/res/fa818e0f/rsrc/js/application/core/behavior-toggle-class.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-toggle-class.js', ), 'javelin-behavior-view-placeholder' => array( 'uri' => '/res/5b89bdf5/rsrc/js/javelin/ext/view/ViewPlaceholder.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-dom', 2 => 'javelin-view-renderer', ), 'disk' => '/rsrc/js/javelin/ext/view/ViewPlaceholder.js', ), 'javelin-behavior-workflow' => array( 'uri' => '/res/2b0e2754/rsrc/js/application/core/behavior-workflow.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-behavior', 1 => 'javelin-stratcom', 2 => 'javelin-workflow', 3 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/behavior-workflow.js', ), 'javelin-color' => array( 'uri' => '/res/b0439fc9/rsrc/js/javelin/ext/fx/Color.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/ext/fx/Color.js', ), 'javelin-cookie' => array( 'uri' => '/res/a9cddab0/rsrc/js/javelin/lib/Cookie.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/lib/Cookie.js', ), 'javelin-dom' => array( 'uri' => '/res/4c79cf8a/rsrc/js/javelin/lib/DOM.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-magical-init', 1 => 'javelin-install', 2 => 'javelin-util', 3 => 'javelin-vector', 4 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/javelin/lib/DOM.js', ), 'javelin-dynval' => array( 'uri' => '/res/d89c6f88/rsrc/js/javelin/ext/reactor/core/DynVal.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-reactornode', 2 => 'javelin-util', 3 => 'javelin-reactor', ), 'disk' => '/rsrc/js/javelin/ext/reactor/core/DynVal.js', ), 'javelin-event' => array( 'uri' => '/res/3815b473/rsrc/js/javelin/core/Event.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/core/Event.js', ), 'javelin-fx' => array( 'uri' => '/res/30ef0914/rsrc/js/javelin/ext/fx/FX.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-color', 1 => 'javelin-install', 2 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/fx/FX.js', ), 'javelin-history' => array( 'uri' => '/res/9bb36651/rsrc/js/javelin/lib/History.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-stratcom', 1 => 'javelin-install', 2 => 'javelin-uri', 3 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/lib/History.js', ), 'javelin-install' => array( 'uri' => '/res/cab679ff/rsrc/js/javelin/core/install.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-util', 1 => 'javelin-magical-init', ), 'disk' => '/rsrc/js/javelin/core/install.js', ), 'javelin-json' => array( 'uri' => '/res/561b8056/rsrc/js/javelin/lib/JSON.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/lib/JSON.js', ), 'javelin-magical-init' => array( 'uri' => '/res/4f3c705c/rsrc/js/javelin/core/init.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/javelin/core/init.js', ), 'javelin-mask' => array( 'uri' => '/res/d2a35fff/rsrc/js/javelin/lib/Mask.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/javelin/lib/Mask.js', ), 'javelin-reactor' => array( 'uri' => '/res/dfd87f3c/rsrc/js/javelin/ext/reactor/core/Reactor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/reactor/core/Reactor.js', ), 'javelin-reactor-dom' => array( 'uri' => '/res/701b6f39/rsrc/js/javelin/ext/reactor/dom/RDOM.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-dom', 1 => 'javelin-dynval', 2 => 'javelin-reactornode', 3 => 'javelin-install', 4 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/reactor/dom/RDOM.js', ), 'javelin-reactor-node-calmer' => array( 'uri' => '/res/5a35920a/rsrc/js/javelin/ext/reactor/core/ReactorNodeCalmer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-reactor', 2 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/reactor/core/ReactorNodeCalmer.js', ), 'javelin-reactornode' => array( 'uri' => '/res/f278cc27/rsrc/js/javelin/ext/reactor/core/ReactorNode.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-reactor', 2 => 'javelin-util', 3 => 'javelin-reactor-node-calmer', ), 'disk' => '/rsrc/js/javelin/ext/reactor/core/ReactorNode.js', ), 'javelin-request' => array( 'uri' => '/res/e25d75b3/rsrc/js/javelin/lib/Request.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-stratcom', 2 => 'javelin-util', 3 => 'javelin-behavior', 4 => 'javelin-json', 5 => 'javelin-dom', 6 => 'javelin-resource', ), 'disk' => '/rsrc/js/javelin/lib/Request.js', ), 'javelin-resource' => array( 'uri' => '/res/d5a3f835/rsrc/js/javelin/lib/Resource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-magical-init', 1 => 'javelin-stratcom', 2 => 'javelin-util', 3 => 'javelin-uri', ), 'disk' => '/rsrc/js/javelin/lib/Resource.js', ), 'javelin-stratcom' => array( 'uri' => '/res/3ec22c29/rsrc/js/javelin/core/Stratcom.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-event', 2 => 'javelin-util', 3 => 'javelin-magical-init', ), 'disk' => '/rsrc/js/javelin/core/Stratcom.js', ), 'javelin-tokenizer' => array( 'uri' => '/res/c75c9e12/rsrc/js/javelin/lib/control/tokenizer/Tokenizer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-dom', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/lib/control/tokenizer/Tokenizer.js', ), 'javelin-typeahead' => array( 'uri' => '/res/dccb789e/rsrc/js/javelin/lib/control/typeahead/Typeahead.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-vector', 3 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/Typeahead.js', ), 'javelin-typeahead-composite-source' => array( 'uri' => '/res/99705f64/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead-source', 2 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js', ), 'javelin-typeahead-normalizer' => array( 'uri' => '/res/a9e97c0d/rsrc/js/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js', ), 'javelin-typeahead-ondemand-source' => array( 'uri' => '/res/81e531aa/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-request', 4 => 'javelin-typeahead-source', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js', ), 'javelin-typeahead-preloaded-source' => array( 'uri' => '/res/d464efd2/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-request', 4 => 'javelin-typeahead-source', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js', ), 'javelin-typeahead-source' => array( 'uri' => '/res/74b1f091/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadSource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-typeahead-normalizer', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadSource.js', ), 'javelin-typeahead-static-source' => array( 'uri' => '/res/c8e247fc/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead-source', ), 'disk' => '/rsrc/js/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js', ), 'javelin-uri' => array( 'uri' => '/res/c107d858/rsrc/js/javelin/lib/URI.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', ), 'disk' => '/rsrc/js/javelin/lib/URI.js', ), 'javelin-util' => array( 'uri' => '/res/25786b6c/rsrc/js/javelin/core/util.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/javelin/core/util.js', ), 'javelin-vector' => array( 'uri' => '/res/f240bdb3/rsrc/js/javelin/lib/Vector.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-event', ), 'disk' => '/rsrc/js/javelin/lib/Vector.js', ), 'javelin-view' => array( 'uri' => '/res/b98657a7/rsrc/js/javelin/ext/view/View.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/view/View.js', ), 'javelin-view-html' => array( 'uri' => '/res/7e5a2122/rsrc/js/javelin/ext/view/HTMLView.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', ), 'disk' => '/rsrc/js/javelin/ext/view/HTMLView.js', ), 'javelin-view-interpreter' => array( 'uri' => '/res/17e911ca/rsrc/js/javelin/ext/view/ViewInterpreter.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-view', 1 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/ext/view/ViewInterpreter.js', ), 'javelin-view-renderer' => array( 'uri' => '/res/db4ed5a2/rsrc/js/javelin/ext/view/ViewRenderer.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/javelin/ext/view/ViewRenderer.js', ), 'javelin-view-visitor' => array( 'uri' => '/res/0ef9dc43/rsrc/js/javelin/ext/view/ViewVisitor.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', ), 'disk' => '/rsrc/js/javelin/ext/view/ViewVisitor.js', ), 'javelin-workflow' => array( 'uri' => '/res/519c4e1a/rsrc/js/javelin/lib/Workflow.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-stratcom', 1 => 'javelin-request', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-install', 5 => 'javelin-util', 6 => 'javelin-mask', 7 => 'javelin-uri', ), 'disk' => '/rsrc/js/javelin/lib/Workflow.js', ), 'lightbox-attachment-css' => array( 'uri' => '/res/c1c3415d/rsrc/css/aphront/lightbox-attachment.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/lightbox-attachment.css', ), 'maniphest-batch-editor' => array( 'uri' => '/res/fb15d744/rsrc/css/application/maniphest/batch-editor.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/maniphest/batch-editor.css', ), 'maniphest-report-css' => array( 'uri' => '/res/2e633fcf/rsrc/css/application/maniphest/report.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/maniphest/report.css', ), 'maniphest-task-edit-css' => array( 'uri' => '/res/68c7863e/rsrc/css/application/maniphest/task-edit.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/maniphest/task-edit.css', ), 'maniphest-task-summary-css' => array( 'uri' => '/res/6e67cb30/rsrc/css/application/maniphest/task-summary.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/maniphest/task-summary.css', ), 'maniphest-transaction-detail-css' => array( 'uri' => '/res/24e5862f/rsrc/css/application/maniphest/transaction-detail.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/maniphest/transaction-detail.css', ), 'multirow-row-manager' => array( 'uri' => '/res/0a9b3dee/rsrc/js/application/core/MultirowRowManager.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-stratcom', 2 => 'javelin-dom', 3 => 'javelin-util', ), 'disk' => '/rsrc/js/application/core/MultirowRowManager.js', ), 'owners-path-editor' => array( 'uri' => '/res/e6c51eb6/rsrc/js/application/owners/OwnersPathEditor.js', 'type' => 'js', 'requires' => array( 0 => 'multirow-row-manager', 1 => 'javelin-install', 2 => 'path-typeahead', 3 => 'javelin-dom', 4 => 'javelin-util', ), 'disk' => '/rsrc/js/application/owners/OwnersPathEditor.js', ), 'owners-path-editor-css' => array( 'uri' => '/res/9bc5332c/rsrc/css/application/owners/owners-path-editor.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/owners/owners-path-editor.css', ), 'path-typeahead' => array( 'uri' => '/res/50246fb6/rsrc/js/application/herald/PathTypeahead.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-typeahead', 2 => 'javelin-dom', 3 => 'javelin-request', 4 => 'javelin-typeahead-ondemand-source', 5 => 'javelin-util', ), 'disk' => '/rsrc/js/application/herald/PathTypeahead.js', ), 'phabricator-action-list-view-css' => array( 'uri' => '/res/a5a123d0/rsrc/css/layout/phabricator-action-list-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-action-list-view.css', ), 'phabricator-app-buttons-css' => array( 'uri' => '/res/1a1f926e/rsrc/css/application/directory/phabricator-app-buttons.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/directory/phabricator-app-buttons.css', ), 'phabricator-application-launch-view-css' => array( 'uri' => '/res/cd9e0fcb/rsrc/css/application/base/phabricator-application-launch-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/base/phabricator-application-launch-view.css', ), 'phabricator-busy' => array( 'uri' => '/res/6ec372e1/rsrc/js/application/core/Busy.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/Busy.js', ), 'phabricator-chatlog-css' => array( 'uri' => '/res/f6631adc/rsrc/css/application/chatlog/chatlog.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/chatlog/chatlog.css', ), 'phabricator-content-source-view-css' => array( 'uri' => '/res/8c738a93/rsrc/css/application/contentsource/content-source-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/contentsource/content-source-view.css', ), 'phabricator-core-buttons-css' => array( 'uri' => '/res/f03fd11e/rsrc/css/core/buttons.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/core/buttons.css', ), 'phabricator-core-css' => array( 'uri' => '/res/a6bafd6e/rsrc/css/core/core.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/core/core.css', ), 'phabricator-countdown-css' => array( 'uri' => '/res/0f646281/rsrc/css/application/countdown/timer.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/countdown/timer.css', ), 'phabricator-directory-css' => array( 'uri' => '/res/61afca2b/rsrc/css/application/directory/phabricator-directory.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/directory/phabricator-directory.css', ), 'phabricator-drag-and-drop-file-upload' => array( 'uri' => '/res/496110e1/rsrc/js/application/core/DragAndDropFileUpload.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', 3 => 'javelin-dom', 4 => 'javelin-uri', 5 => 'phabricator-file-upload', ), 'disk' => '/rsrc/js/application/core/DragAndDropFileUpload.js', ), 'phabricator-dropdown-menu' => array( 'uri' => '/res/2b4aa4d8/rsrc/js/application/core/DropdownMenu.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-vector', 4 => 'javelin-stratcom', 5 => 'phabricator-menu-item', ), 'disk' => '/rsrc/js/application/core/DropdownMenu.js', ), 'phabricator-feed-css' => array( 'uri' => '/res/8ddc1d44/rsrc/css/application/feed/feed.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/feed/feed.css', ), 'phabricator-file-upload' => array( 'uri' => '/res/2de10295/rsrc/js/application/core/FileUpload.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'phabricator-notification', ), 'disk' => '/rsrc/js/application/core/FileUpload.js', ), 'phabricator-filetree-view-css' => array( 'uri' => '/res/214cbf2b/rsrc/css/layout/phabricator-filetree-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-filetree-view.css', ), 'phabricator-flag-css' => array( 'uri' => '/res/2eee890a/rsrc/css/application/flag/flag.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/flag/flag.css', ), 'phabricator-form-view-css' => array( 'uri' => '/res/7609ca21/rsrc/css/layout/phabricator-form-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-form-view.css', ), 'phabricator-header-view-css' => array( 'uri' => '/res/c89cc14d/rsrc/css/layout/phabricator-header-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-header-view.css', ), 'phabricator-jump-nav' => array( 'uri' => '/res/8bdc0fc3/rsrc/css/application/directory/phabricator-jump-nav.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/directory/phabricator-jump-nav.css', ), 'phabricator-keyboard-shortcut' => array( 'uri' => '/res/beed38cd/rsrc/js/application/core/KeyboardShortcut.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'phabricator-keyboard-shortcut-manager', ), 'disk' => '/rsrc/js/application/core/KeyboardShortcut.js', ), 'phabricator-keyboard-shortcut-manager' => array( 'uri' => '/res/0be80136/rsrc/js/application/core/KeyboardShortcutManager.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-stratcom', 3 => 'javelin-dom', 4 => 'javelin-vector', ), 'disk' => '/rsrc/js/application/core/KeyboardShortcutManager.js', ), 'phabricator-main-menu-view' => array( - 'uri' => '/res/8c3aaa49/rsrc/css/application/base/main-menu-view.css', + 'uri' => '/res/1a088c24/rsrc/css/application/base/main-menu-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/base/main-menu-view.css', ), 'phabricator-menu-item' => array( 'uri' => '/res/32fc2325/rsrc/js/application/core/DropdownMenuItem.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/core/DropdownMenuItem.js', ), 'phabricator-nav-view-css' => array( 'uri' => '/res/84381dcf/rsrc/css/aphront/phabricator-nav-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/phabricator-nav-view.css', ), 'phabricator-notification' => array( 'uri' => '/res/ad727561/rsrc/js/application/core/Notification.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', 2 => 'javelin-stratcom', 3 => 'javelin-util', 4 => 'phabricator-notification-css', ), 'disk' => '/rsrc/js/application/core/Notification.js', ), 'phabricator-notification-css' => array( 'uri' => '/res/91197237/rsrc/css/aphront/notification.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/notification.css', ), 'phabricator-notification-menu-css' => array( 'uri' => '/res/fc8a7fb9/rsrc/css/application/base/notification-menu.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/base/notification-menu.css', ), 'phabricator-object-item-list-view-css' => array( 'uri' => '/res/945fabe9/rsrc/css/layout/phabricator-object-item-list-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-object-item-list-view.css', ), 'phabricator-object-list-view-css' => array( 'uri' => '/res/4f183668/rsrc/css/application/projects/phabricator-object-list-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/projects/phabricator-object-list-view.css', ), 'phabricator-object-selector-css' => array( 'uri' => '/res/7eb4c705/rsrc/css/application/objectselector/object-selector.css', 'type' => 'css', 'requires' => array( 0 => 'aphront-dialog-view-css', ), 'disk' => '/rsrc/css/application/objectselector/object-selector.css', ), 'phabricator-paste-file-upload' => array( 'uri' => '/res/b0b8afd8/rsrc/js/application/core/PasteFileUpload.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', 3 => 'javelin-dom', 4 => 'javelin-uri', ), 'disk' => '/rsrc/js/application/core/PasteFileUpload.js', ), 'phabricator-pinboard-view-css' => array( 'uri' => '/res/3a24d210/rsrc/css/layout/phabricator-pinboard-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-pinboard-view.css', ), 'phabricator-prefab' => array( 'uri' => '/res/2734e45f/rsrc/js/application/core/Prefab.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-typeahead', 4 => 'javelin-tokenizer', 5 => 'javelin-typeahead-preloaded-source', 6 => 'javelin-typeahead-ondemand-source', 7 => 'javelin-dom', 8 => 'javelin-stratcom', 9 => 'javelin-util', ), 'disk' => '/rsrc/js/application/core/Prefab.js', ), 'phabricator-profile-css' => array( 'uri' => '/res/9869d10b/rsrc/css/application/profile/profile-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/profile/profile-view.css', ), 'phabricator-profile-header-css' => array( 'uri' => '/res/4b1cb23b/rsrc/css/application/profile/profile-header-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/profile/profile-header-view.css', ), 'phabricator-project-tag-css' => array( 'uri' => '/res/6b0a5223/rsrc/css/application/projects/project-tag.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/projects/project-tag.css', ), 'phabricator-property-list-view-css' => array( 'uri' => '/res/da1e1227/rsrc/css/layout/phabricator-property-list-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-property-list-view.css', ), 'phabricator-remarkup-css' => array( 'uri' => '/res/2e0d0042/rsrc/css/core/remarkup.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/core/remarkup.css', ), 'phabricator-search-results-css' => array( 'uri' => '/res/f8a86e27/rsrc/css/application/search/search-results.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/search/search-results.css', ), 'phabricator-shaped-request' => array( 'uri' => '/res/fbdb92db/rsrc/js/application/core/ShapedRequest.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-request', ), 'disk' => '/rsrc/js/application/core/ShapedRequest.js', ), 'phabricator-slowvote-css' => array( 'uri' => '/res/94d20443/rsrc/css/application/slowvote/slowvote.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/slowvote/slowvote.css', ), 'phabricator-source-code-view-css' => array( 'uri' => '/res/cf0c566c/rsrc/css/layout/phabricator-source-code-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-source-code-view.css', ), 'phabricator-standard-page-view' => array( 'uri' => '/res/92068207/rsrc/css/application/base/standard-page-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/base/standard-page-view.css', ), 'phabricator-tag-view-css' => array( 'uri' => '/res/e10bf844/rsrc/css/layout/phabricator-tag-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-tag-view.css', ), 'phabricator-textareautils' => array( 'uri' => '/res/703614ea/rsrc/js/application/core/TextAreaUtils.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', ), 'disk' => '/rsrc/js/application/core/TextAreaUtils.js', ), 'phabricator-timeline-view-css' => array( 'uri' => '/res/aa995c54/rsrc/css/layout/phabricator-timeline-view.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/layout/phabricator-timeline-view.css', ), 'phabricator-tooltip' => array( 'uri' => '/res/bcddf5de/rsrc/js/application/core/ToolTip.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-util', 2 => 'javelin-dom', 3 => 'javelin-vector', ), 'disk' => '/rsrc/js/application/core/ToolTip.js', ), 'phabricator-transaction-view-css' => array( 'uri' => '/res/731959fb/rsrc/css/aphront/transaction.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/aphront/transaction.css', ), 'phabricator-ui-example-css' => array( 'uri' => '/res/376ab671/rsrc/css/application/uiexample/example.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/uiexample/example.css', ), 'phabricator-uiexample-javelin-view' => array( 'uri' => '/res/a2ce2cfc/rsrc/js/application/uiexample/JavelinViewExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', ), 'disk' => '/rsrc/js/application/uiexample/JavelinViewExample.js', ), 'phabricator-uiexample-reactor-button' => array( 'uri' => '/res/142127f6/rsrc/js/application/uiexample/ReactorButtonExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorButtonExample.js', ), 'phabricator-uiexample-reactor-checkbox' => array( 'uri' => '/res/c75cb9e9/rsrc/js/application/uiexample/ReactorCheckboxExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorCheckboxExample.js', ), 'phabricator-uiexample-reactor-focus' => array( 'uri' => '/res/3cc992eb/rsrc/js/application/uiexample/ReactorFocusExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorFocusExample.js', ), 'phabricator-uiexample-reactor-input' => array( 'uri' => '/res/4953da16/rsrc/js/application/uiexample/ReactorInputExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', 5 => 'javelin-view-html', 6 => 'javelin-view-interpreter', 7 => 'javelin-view-renderer', ), 'disk' => '/rsrc/js/application/uiexample/ReactorInputExample.js', ), 'phabricator-uiexample-reactor-mouseover' => array( 'uri' => '/res/52a355b6/rsrc/js/application/uiexample/ReactorMouseoverExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorMouseoverExample.js', ), 'phabricator-uiexample-reactor-radio' => array( 'uri' => '/res/ae87f3af/rsrc/js/application/uiexample/ReactorRadioExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorRadioExample.js', ), 'phabricator-uiexample-reactor-select' => array( 'uri' => '/res/23cb448a/rsrc/js/application/uiexample/ReactorSelectExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorSelectExample.js', ), 'phabricator-uiexample-reactor-sendclass' => array( 'uri' => '/res/8cd34264/rsrc/js/application/uiexample/ReactorSendClassExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorSendClassExample.js', ), 'phabricator-uiexample-reactor-sendproperties' => array( 'uri' => '/res/18af54aa/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-view', 2 => 'javelin-util', 3 => 'javelin-dom', 4 => 'javelin-reactor-dom', ), 'disk' => '/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js', ), 'phame-css' => array( 'uri' => '/res/2e4c86eb/rsrc/css/application/phame/phame.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/phame/phame.css', ), 'phriction-document-css' => array( 'uri' => '/res/8d09bd7f/rsrc/css/application/phriction/phriction-document-css.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/phriction/phriction-document-css.css', ), 'ponder-comment-table-css' => array( 'uri' => '/res/a1bb9056/rsrc/css/application/ponder/comments.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/ponder/comments.css', ), 'ponder-core-view-css' => array( 'uri' => '/res/3a2d5e18/rsrc/css/application/ponder/core.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/ponder/core.css', ), 'ponder-feed-view-css' => array( 'uri' => '/res/df22bd20/rsrc/css/application/ponder/feed.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/ponder/feed.css', ), 'ponder-post-css' => array( 'uri' => '/res/013b9e2c/rsrc/css/application/ponder/post.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/ponder/post.css', ), 'ponder-vote-css' => array( 'uri' => '/res/ea8316c2/rsrc/css/application/ponder/vote.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/ponder/vote.css', ), 'raphael-core' => array( 'uri' => '/res/3f48575a/rsrc/js/raphael/raphael.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/raphael/raphael.js', ), 'raphael-g' => array( 'uri' => '/res/b07e5245/rsrc/js/raphael/g.raphael.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/raphael/g.raphael.js', ), 'raphael-g-line' => array( 'uri' => '/res/a59c8556/rsrc/js/raphael/g.raphael.line.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/raphael/g.raphael.line.js', ), 'sprite-icon-css' => array( 'uri' => '/res/ca19186e/rsrc/css/sprite-icon.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/sprite-icon.css', ), + 'sprite-menu-css' => + array( + 'uri' => '/res/d0239d8c/rsrc/css/sprite-menu.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/sprite-menu.css', + ), 'stripe-core' => array( 'uri' => '/res/3b0f0ad4/rsrc/js/stripe/stripe_core.js', 'type' => 'js', 'requires' => array( ), 'disk' => '/rsrc/js/stripe/stripe_core.js', ), 'stripe-payment-form-css' => array( 'uri' => '/res/634a6371/rsrc/css/application/phortune/stripe-payment-form.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/application/phortune/stripe-payment-form.css', ), 'syntax-highlighting-css' => array( 'uri' => '/res/cb3b9dc0/rsrc/css/core/syntax.css', 'type' => 'css', 'requires' => array( ), 'disk' => '/rsrc/css/core/syntax.css', ), ), array( 'packages' => array( - '230c5ef4' => + 'a567467a' => array( 'name' => 'core.pkg.css', 'symbols' => array( 0 => 'phabricator-core-css', 1 => 'phabricator-core-buttons-css', 2 => 'phabricator-standard-page-view', 3 => 'aphront-dialog-view-css', 4 => 'aphront-form-view-css', 5 => 'aphront-panel-view-css', 6 => 'aphront-side-nav-view-css', 7 => 'aphront-table-view-css', 8 => 'aphront-crumbs-view-css', 9 => 'aphront-tokenizer-control-css', 10 => 'aphront-typeahead-control-css', 11 => 'aphront-list-filter-view-css', 12 => 'phabricator-directory-css', 13 => 'phabricator-jump-nav', 14 => 'phabricator-app-buttons-css', 15 => 'phabricator-remarkup-css', 16 => 'syntax-highlighting-css', 17 => 'aphront-pager-view-css', 18 => 'phabricator-transaction-view-css', 19 => 'aphront-tooltip-css', 20 => 'aphront-headsup-view-css', 21 => 'phabricator-flag-css', 22 => 'aphront-error-view-css', 23 => 'autosprite-css', 24 => 'sprite-icon-css', 25 => 'phabricator-main-menu-view', 26 => 'phabricator-notification-css', 27 => 'phabricator-notification-menu-css', 28 => 'lightbox-attachment-css', 29 => 'phabricator-header-view-css', 30 => 'phabricator-form-view-css', 31 => 'phabricator-filetree-view-css', 32 => 'phabricator-nav-view-css', ), - 'uri' => '/res/pkg/230c5ef4/core.pkg.css', + 'uri' => '/res/pkg/a567467a/core.pkg.css', 'type' => 'css', ), - 'd223b82c' => + 'a29ae2c4' => array( 'name' => 'core.pkg.js', 'symbols' => array( 0 => 'javelin-behavior-aphront-basic-tokenizer', 1 => 'javelin-behavior-workflow', 2 => 'javelin-behavior-aphront-form-disable-on-submit', 3 => 'phabricator-keyboard-shortcut-manager', 4 => 'phabricator-keyboard-shortcut', 5 => 'javelin-behavior-phabricator-keyboard-shortcuts', 6 => 'javelin-behavior-refresh-csrf', 7 => 'javelin-behavior-phabricator-watch-anchor', 8 => 'javelin-behavior-phabricator-autofocus', 9 => 'phabricator-paste-file-upload', 10 => 'phabricator-menu-item', 11 => 'phabricator-dropdown-menu', 12 => 'javelin-behavior-phabricator-oncopy', 13 => 'phabricator-tooltip', 14 => 'javelin-behavior-phabricator-tooltips', 15 => 'phabricator-prefab', 16 => 'javelin-behavior-device', 17 => 'javelin-behavior-toggle-class', 18 => 'javelin-behavior-lightbox-attachments', 19 => 'phabricator-busy', 20 => 'javelin-aphlict', 21 => 'phabricator-notification', 22 => 'javelin-behavior-aphlict-listen', 23 => 'javelin-behavior-phabricator-search-typeahead', 24 => 'javelin-behavior-konami', 25 => 'javelin-behavior-aphlict-dropdown', 26 => 'javelin-behavior-phabricator-active-nav', 27 => 'javelin-behavior-phabricator-nav', 28 => 'javelin-behavior-phabricator-remarkup-assist', 29 => 'phabricator-textareautils', 30 => 'phabricator-file-upload', ), - 'uri' => '/res/pkg/d223b82c/core.pkg.js', + 'uri' => '/res/pkg/a29ae2c4/core.pkg.js', 'type' => 'js', ), '3c5efda9' => array( 'name' => 'darkconsole.pkg.js', 'symbols' => array( 0 => 'javelin-behavior-dark-console-ajax', 1 => 'javelin-behavior-dark-console', 2 => 'javelin-behavior-error-log', ), 'uri' => '/res/pkg/3c5efda9/darkconsole.pkg.js', 'type' => 'js', ), 47549184 => array( 'name' => 'differential.pkg.css', 'symbols' => array( 0 => 'differential-core-view-css', 1 => 'differential-changeset-view-css', 2 => 'differential-results-table-css', 3 => 'differential-revision-history-css', 4 => 'differential-revision-list-css', 5 => 'differential-table-of-contents-css', 6 => 'differential-revision-comment-css', 7 => 'differential-revision-add-comment-css', 8 => 'differential-revision-comment-list-css', 9 => 'phabricator-object-selector-css', 10 => 'aphront-headsup-action-list-view-css', 11 => 'phabricator-content-source-view-css', 12 => 'differential-local-commits-view-css', 13 => 'inline-comment-summary-css', ), 'uri' => '/res/pkg/47549184/differential.pkg.css', 'type' => 'css', ), '7ecd31fa' => array( 'name' => 'differential.pkg.js', 'symbols' => array( 0 => 'phabricator-drag-and-drop-file-upload', 1 => 'phabricator-shaped-request', 2 => 'javelin-behavior-differential-feedback-preview', 3 => 'javelin-behavior-differential-edit-inline-comments', 4 => 'javelin-behavior-differential-populate', 5 => 'javelin-behavior-differential-show-more', 6 => 'javelin-behavior-differential-diff-radios', 7 => 'javelin-behavior-differential-accept-with-errors', 8 => 'javelin-behavior-differential-comment-jump', 9 => 'javelin-behavior-differential-add-reviewers-and-ccs', 10 => 'javelin-behavior-differential-keyboard-navigation', 11 => 'javelin-behavior-aphront-drag-and-drop', 12 => 'javelin-behavior-aphront-drag-and-drop-textarea', 13 => 'javelin-behavior-phabricator-object-selector', 14 => 'javelin-behavior-repository-crossreference', 15 => 'differential-inline-comment-editor', 16 => 'javelin-behavior-differential-dropdown-menus', 17 => 'javelin-behavior-differential-toggle-files', 18 => 'javelin-behavior-differential-user-select', ), 'uri' => '/res/pkg/7ecd31fa/differential.pkg.js', 'type' => 'js', ), 'c8ce2d88' => array( 'name' => 'diffusion.pkg.css', 'symbols' => array( 0 => 'diffusion-commit-view-css', 1 => 'diffusion-icons-css', ), 'uri' => '/res/pkg/c8ce2d88/diffusion.pkg.css', 'type' => 'css', ), '5e68be89' => array( 'name' => 'diffusion.pkg.js', 'symbols' => array( 0 => 'javelin-behavior-diffusion-pull-lastmodified', 1 => 'javelin-behavior-diffusion-commit-graph', 2 => 'javelin-behavior-audit-preview', ), 'uri' => '/res/pkg/5e68be89/diffusion.pkg.js', 'type' => 'js', ), 20727878 => array( 'name' => 'javelin.pkg.js', 'symbols' => array( 0 => 'javelin-util', 1 => 'javelin-install', 2 => 'javelin-event', 3 => 'javelin-stratcom', 4 => 'javelin-behavior', 5 => 'javelin-resource', 6 => 'javelin-request', 7 => 'javelin-vector', 8 => 'javelin-dom', 9 => 'javelin-json', 10 => 'javelin-uri', 11 => 'javelin-workflow', 12 => 'javelin-mask', 13 => 'javelin-typeahead', 14 => 'javelin-typeahead-normalizer', 15 => 'javelin-typeahead-source', 16 => 'javelin-typeahead-preloaded-source', 17 => 'javelin-typeahead-ondemand-source', 18 => 'javelin-tokenizer', 19 => 'javelin-fx', 20 => 'javelin-color', ), 'uri' => '/res/pkg/20727878/javelin.pkg.js', 'type' => 'js', ), '7839ae2d' => array( 'name' => 'maniphest.pkg.css', 'symbols' => array( 0 => 'maniphest-task-summary-css', 1 => 'maniphest-transaction-detail-css', 2 => 'aphront-attached-file-view-css', 3 => 'phabricator-project-tag-css', ), 'uri' => '/res/pkg/7839ae2d/maniphest.pkg.css', 'type' => 'css', ), '7707de41' => array( 'name' => 'maniphest.pkg.js', 'symbols' => array( 0 => 'javelin-behavior-maniphest-batch-selector', 1 => 'javelin-behavior-maniphest-transaction-controls', 2 => 'javelin-behavior-maniphest-transaction-preview', 3 => 'javelin-behavior-maniphest-transaction-expand', 4 => 'javelin-behavior-maniphest-subpriority-editor', ), 'uri' => '/res/pkg/7707de41/maniphest.pkg.js', 'type' => 'js', ), ), 'reverse' => array( 'aphront-attached-file-view-css' => '7839ae2d', - 'aphront-crumbs-view-css' => '230c5ef4', - 'aphront-dialog-view-css' => '230c5ef4', - 'aphront-error-view-css' => '230c5ef4', - 'aphront-form-view-css' => '230c5ef4', + 'aphront-crumbs-view-css' => 'a567467a', + 'aphront-dialog-view-css' => 'a567467a', + 'aphront-error-view-css' => 'a567467a', + 'aphront-form-view-css' => 'a567467a', 'aphront-headsup-action-list-view-css' => '47549184', - 'aphront-headsup-view-css' => '230c5ef4', - 'aphront-list-filter-view-css' => '230c5ef4', - 'aphront-pager-view-css' => '230c5ef4', - 'aphront-panel-view-css' => '230c5ef4', - 'aphront-side-nav-view-css' => '230c5ef4', - 'aphront-table-view-css' => '230c5ef4', - 'aphront-tokenizer-control-css' => '230c5ef4', - 'aphront-tooltip-css' => '230c5ef4', - 'aphront-typeahead-control-css' => '230c5ef4', - 'autosprite-css' => '230c5ef4', + 'aphront-headsup-view-css' => 'a567467a', + 'aphront-list-filter-view-css' => 'a567467a', + 'aphront-pager-view-css' => 'a567467a', + 'aphront-panel-view-css' => 'a567467a', + 'aphront-side-nav-view-css' => 'a567467a', + 'aphront-table-view-css' => 'a567467a', + 'aphront-tokenizer-control-css' => 'a567467a', + 'aphront-tooltip-css' => 'a567467a', + 'aphront-typeahead-control-css' => 'a567467a', + 'autosprite-css' => 'a567467a', 'differential-changeset-view-css' => '47549184', 'differential-core-view-css' => '47549184', 'differential-inline-comment-editor' => '7ecd31fa', 'differential-local-commits-view-css' => '47549184', 'differential-results-table-css' => '47549184', 'differential-revision-add-comment-css' => '47549184', 'differential-revision-comment-css' => '47549184', 'differential-revision-comment-list-css' => '47549184', 'differential-revision-history-css' => '47549184', 'differential-revision-list-css' => '47549184', 'differential-table-of-contents-css' => '47549184', 'diffusion-commit-view-css' => 'c8ce2d88', 'diffusion-icons-css' => 'c8ce2d88', 'inline-comment-summary-css' => '47549184', - 'javelin-aphlict' => 'd223b82c', + 'javelin-aphlict' => 'a29ae2c4', 'javelin-behavior' => '20727878', - 'javelin-behavior-aphlict-dropdown' => 'd223b82c', - 'javelin-behavior-aphlict-listen' => 'd223b82c', - 'javelin-behavior-aphront-basic-tokenizer' => 'd223b82c', + 'javelin-behavior-aphlict-dropdown' => 'a29ae2c4', + 'javelin-behavior-aphlict-listen' => 'a29ae2c4', + 'javelin-behavior-aphront-basic-tokenizer' => 'a29ae2c4', 'javelin-behavior-aphront-drag-and-drop' => '7ecd31fa', 'javelin-behavior-aphront-drag-and-drop-textarea' => '7ecd31fa', - 'javelin-behavior-aphront-form-disable-on-submit' => 'd223b82c', + 'javelin-behavior-aphront-form-disable-on-submit' => 'a29ae2c4', 'javelin-behavior-audit-preview' => '5e68be89', 'javelin-behavior-dark-console' => '3c5efda9', 'javelin-behavior-dark-console-ajax' => '3c5efda9', - 'javelin-behavior-device' => 'd223b82c', + 'javelin-behavior-device' => 'a29ae2c4', 'javelin-behavior-differential-accept-with-errors' => '7ecd31fa', 'javelin-behavior-differential-add-reviewers-and-ccs' => '7ecd31fa', 'javelin-behavior-differential-comment-jump' => '7ecd31fa', 'javelin-behavior-differential-diff-radios' => '7ecd31fa', 'javelin-behavior-differential-dropdown-menus' => '7ecd31fa', 'javelin-behavior-differential-edit-inline-comments' => '7ecd31fa', 'javelin-behavior-differential-feedback-preview' => '7ecd31fa', 'javelin-behavior-differential-keyboard-navigation' => '7ecd31fa', 'javelin-behavior-differential-populate' => '7ecd31fa', 'javelin-behavior-differential-show-more' => '7ecd31fa', 'javelin-behavior-differential-toggle-files' => '7ecd31fa', 'javelin-behavior-differential-user-select' => '7ecd31fa', 'javelin-behavior-diffusion-commit-graph' => '5e68be89', 'javelin-behavior-diffusion-pull-lastmodified' => '5e68be89', 'javelin-behavior-error-log' => '3c5efda9', - 'javelin-behavior-konami' => 'd223b82c', - 'javelin-behavior-lightbox-attachments' => 'd223b82c', + 'javelin-behavior-konami' => 'a29ae2c4', + 'javelin-behavior-lightbox-attachments' => 'a29ae2c4', 'javelin-behavior-maniphest-batch-selector' => '7707de41', 'javelin-behavior-maniphest-subpriority-editor' => '7707de41', 'javelin-behavior-maniphest-transaction-controls' => '7707de41', 'javelin-behavior-maniphest-transaction-expand' => '7707de41', 'javelin-behavior-maniphest-transaction-preview' => '7707de41', - 'javelin-behavior-phabricator-active-nav' => 'd223b82c', - 'javelin-behavior-phabricator-autofocus' => 'd223b82c', - 'javelin-behavior-phabricator-keyboard-shortcuts' => 'd223b82c', - 'javelin-behavior-phabricator-nav' => 'd223b82c', + 'javelin-behavior-phabricator-active-nav' => 'a29ae2c4', + 'javelin-behavior-phabricator-autofocus' => 'a29ae2c4', + 'javelin-behavior-phabricator-keyboard-shortcuts' => 'a29ae2c4', + 'javelin-behavior-phabricator-nav' => 'a29ae2c4', 'javelin-behavior-phabricator-object-selector' => '7ecd31fa', - 'javelin-behavior-phabricator-oncopy' => 'd223b82c', - 'javelin-behavior-phabricator-remarkup-assist' => 'd223b82c', - 'javelin-behavior-phabricator-search-typeahead' => 'd223b82c', - 'javelin-behavior-phabricator-tooltips' => 'd223b82c', - 'javelin-behavior-phabricator-watch-anchor' => 'd223b82c', - 'javelin-behavior-refresh-csrf' => 'd223b82c', + 'javelin-behavior-phabricator-oncopy' => 'a29ae2c4', + 'javelin-behavior-phabricator-remarkup-assist' => 'a29ae2c4', + 'javelin-behavior-phabricator-search-typeahead' => 'a29ae2c4', + 'javelin-behavior-phabricator-tooltips' => 'a29ae2c4', + 'javelin-behavior-phabricator-watch-anchor' => 'a29ae2c4', + 'javelin-behavior-refresh-csrf' => 'a29ae2c4', 'javelin-behavior-repository-crossreference' => '7ecd31fa', - 'javelin-behavior-toggle-class' => 'd223b82c', - 'javelin-behavior-workflow' => 'd223b82c', + 'javelin-behavior-toggle-class' => 'a29ae2c4', + 'javelin-behavior-workflow' => 'a29ae2c4', 'javelin-color' => '20727878', 'javelin-dom' => '20727878', 'javelin-event' => '20727878', 'javelin-fx' => '20727878', 'javelin-install' => '20727878', 'javelin-json' => '20727878', 'javelin-mask' => '20727878', 'javelin-request' => '20727878', 'javelin-resource' => '20727878', 'javelin-stratcom' => '20727878', 'javelin-tokenizer' => '20727878', 'javelin-typeahead' => '20727878', 'javelin-typeahead-normalizer' => '20727878', 'javelin-typeahead-ondemand-source' => '20727878', 'javelin-typeahead-preloaded-source' => '20727878', 'javelin-typeahead-source' => '20727878', 'javelin-uri' => '20727878', 'javelin-util' => '20727878', 'javelin-vector' => '20727878', 'javelin-workflow' => '20727878', - 'lightbox-attachment-css' => '230c5ef4', + 'lightbox-attachment-css' => 'a567467a', 'maniphest-task-summary-css' => '7839ae2d', 'maniphest-transaction-detail-css' => '7839ae2d', - 'phabricator-app-buttons-css' => '230c5ef4', - 'phabricator-busy' => 'd223b82c', + 'phabricator-app-buttons-css' => 'a567467a', + 'phabricator-busy' => 'a29ae2c4', 'phabricator-content-source-view-css' => '47549184', - 'phabricator-core-buttons-css' => '230c5ef4', - 'phabricator-core-css' => '230c5ef4', - 'phabricator-directory-css' => '230c5ef4', + 'phabricator-core-buttons-css' => 'a567467a', + 'phabricator-core-css' => 'a567467a', + 'phabricator-directory-css' => 'a567467a', 'phabricator-drag-and-drop-file-upload' => '7ecd31fa', - 'phabricator-dropdown-menu' => 'd223b82c', - 'phabricator-file-upload' => 'd223b82c', - 'phabricator-filetree-view-css' => '230c5ef4', - 'phabricator-flag-css' => '230c5ef4', - 'phabricator-form-view-css' => '230c5ef4', - 'phabricator-header-view-css' => '230c5ef4', - 'phabricator-jump-nav' => '230c5ef4', - 'phabricator-keyboard-shortcut' => 'd223b82c', - 'phabricator-keyboard-shortcut-manager' => 'd223b82c', - 'phabricator-main-menu-view' => '230c5ef4', - 'phabricator-menu-item' => 'd223b82c', - 'phabricator-nav-view-css' => '230c5ef4', - 'phabricator-notification' => 'd223b82c', - 'phabricator-notification-css' => '230c5ef4', - 'phabricator-notification-menu-css' => '230c5ef4', + 'phabricator-dropdown-menu' => 'a29ae2c4', + 'phabricator-file-upload' => 'a29ae2c4', + 'phabricator-filetree-view-css' => 'a567467a', + 'phabricator-flag-css' => 'a567467a', + 'phabricator-form-view-css' => 'a567467a', + 'phabricator-header-view-css' => 'a567467a', + 'phabricator-jump-nav' => 'a567467a', + 'phabricator-keyboard-shortcut' => 'a29ae2c4', + 'phabricator-keyboard-shortcut-manager' => 'a29ae2c4', + 'phabricator-main-menu-view' => 'a567467a', + 'phabricator-menu-item' => 'a29ae2c4', + 'phabricator-nav-view-css' => 'a567467a', + 'phabricator-notification' => 'a29ae2c4', + 'phabricator-notification-css' => 'a567467a', + 'phabricator-notification-menu-css' => 'a567467a', 'phabricator-object-selector-css' => '47549184', - 'phabricator-paste-file-upload' => 'd223b82c', - 'phabricator-prefab' => 'd223b82c', + 'phabricator-paste-file-upload' => 'a29ae2c4', + 'phabricator-prefab' => 'a29ae2c4', 'phabricator-project-tag-css' => '7839ae2d', - 'phabricator-remarkup-css' => '230c5ef4', + 'phabricator-remarkup-css' => 'a567467a', 'phabricator-shaped-request' => '7ecd31fa', - 'phabricator-standard-page-view' => '230c5ef4', - 'phabricator-textareautils' => 'd223b82c', - 'phabricator-tooltip' => 'd223b82c', - 'phabricator-transaction-view-css' => '230c5ef4', - 'sprite-icon-css' => '230c5ef4', - 'syntax-highlighting-css' => '230c5ef4', + 'phabricator-standard-page-view' => 'a567467a', + 'phabricator-textareautils' => 'a29ae2c4', + 'phabricator-tooltip' => 'a29ae2c4', + 'phabricator-transaction-view-css' => 'a567467a', + 'sprite-icon-css' => 'a567467a', + 'syntax-highlighting-css' => 'a567467a', ), )); diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php index febd36f653..77d588e40c 100644 --- a/src/infrastructure/celerity/CeleritySpriteGenerator.php +++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php @@ -1,132 +1,196 @@ getDirectoryList('icons_1x'); $colors = array( '', 'grey', 'white', ); $scales = array( '1x' => 1, '2x' => 2, ); $template = id(new PhutilSprite()) ->setSourceSize(14, 14); $sprites = array(); foreach ($colors as $color) { foreach ($icons as $icon) { $prefix = 'icons_'; if (strlen($color)) { $prefix .= $color.'_'; } $suffix = ''; if (strlen($color)) { $suffix = '-'.$color; } $sprite = id(clone $template) ->setName('action-'.$icon.$suffix); if ($color == 'white') { $sprite->setTargetCSS( '.device-desktop .phabricator-action-view:hover .action-'.$icon); } else { $sprite->setTargetCSS('.action-'.$icon.$suffix); } foreach ($scales as $scale_key => $scale) { $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png'); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } } $remarkup_icons = $this->getDirectoryList('remarkup_1x'); foreach ($remarkup_icons as $icon) { $prefix = 'remarkup_'; // Strip 'text_' from these file names. $class_name = substr($icon, 5); $sprite = id(clone $template) ->setName('remarkup-assist-'.$icon) ->setTargetCSS('.remarkup-assist-'.$class_name); foreach ($scales as $scale_key => $scale) { $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png'); $sprite->setSourceFile($path, $scale); } $sprites[] = $sprite; } $sheet = $this->buildSheet('icon'); $sheet->setScales($scales); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); } return $sheet; } + public function buildMenuSheet() { + $sprites = array(); + + $sources = array( + 'round_bubble' => array( + 'x' => 26, + 'y' => 26, + 'css' => '.phabricator-main-menu-alert-bubble' + ), + 'bubble' => array( + 'x' => 46, + 'y' => 26, + 'css' => '.phabricator-main-menu-alert-bubble.alert-unread' + ), + 'seen_read_all' => array( + 'x' => 14, + 'y' => 14, + 'css' => + '.alert-notifications .phabricator-main-menu-alert-icon', + ), + 'seen_have_unread' => array( + 'x' => 14, + 'y' => 14, + 'css' => + '.alert-notifications:hover .phabricator-main-menu-alert-icon', + ), + 'unseen_any' => array( + 'x' => 14, + 'y' => 14, + 'css' => + '.alert-notifications.alert-unread .phabricator-main-menu-alert-icon', + ), + ); + + $scales = array( + '1x' => 1, + '2x' => 2, + ); + + $template = new PhutilSprite(); + foreach ($sources as $name => $spec) { + $sprite = id(clone $template) + ->setName($name) + ->setSourceSize($spec['x'], $spec['y']) + ->setTargetCSS($spec['css']); + + foreach ($scales as $scale_name => $scale) { + $path = 'notifications_'.$scale_name.'/'.$name.'.png'; + $path = $this->getPath($path); + + $sprite->setSourceFile($path, $scale); + } + $sprites[] = $sprite; + } + + $sheet = $this->buildSheet('menu'); + $sheet->setScales($scales); + foreach ($sprites as $sprite) { + $sheet->addSprite($sprite); + } + + return $sheet; + } + private function getPath($to_path = null) { $root = dirname(phutil_get_library_root('phabricator')); return $root.'/resources/sprite/'.$to_path; } private function getDirectoryList($dir) { $path = $this->getPath($dir); $result = array(); $images = Filesystem::listDirectory($path, $include_hidden = false); foreach ($images as $image) { if (!preg_match('/\.png$/', $image)) { throw new Exception( "Expected file '{$image}' in '{$path}' to be a sprite source ". "ending in '.png'."); } $result[] = substr($image, 0, -4); } return $result; } private function buildSheet($name) { $sheet = new PhutilSpriteSheet(); $at = '@'; $sheet->setCSSHeader(<<user = $user; } public function render() { $user = $this->user; require_celerity_resource('phabricator-main-menu-view'); $header_id = celerity_generate_unique_node_id(); $extra = ''; $group = new PhabricatorMainMenuGroupView(); $group->addClass('phabricator-main-menu-group-logo'); $group->setCollapsible(false); $group->appendChild( phutil_render_tag( 'a', array( 'class' => 'phabricator-main-menu-logo', 'href' => '/', ), 'Phabricator')); if (PhabricatorEnv::getEnvConfig('notification.enabled') && $user->isLoggedIn()) { list($menu, $dropdown) = $this->renderNotificationMenu(); $group->appendChild($menu); $extra .= $dropdown; } $group->appendChild( javelin_render_tag( 'a', array( 'class' => 'phabricator-main-menu-expand-button', 'sigil' => 'jx-toggle-class', 'meta' => array( 'map' => array( $header_id => 'phabricator-main-menu-reveal', ), ), ), 'Expand')); $logo = $group->render(); return phutil_render_tag( 'div', array( 'class' => 'phabricator-main-menu', 'id' => $header_id, ), $logo.$this->renderChildren()). $extra; } private function renderNotificationMenu() { $user = $this->user; require_celerity_resource('phabricator-notification-css'); require_celerity_resource('phabricator-notification-menu-css'); + require_celerity_resource('sprite-menu-css'); - $indicator_id = celerity_generate_unique_node_id(); + $count_id = celerity_generate_unique_node_id(); $dropdown_id = celerity_generate_unique_node_id(); - $menu_id = celerity_generate_unique_node_id(); + $bubble_id = celerity_generate_unique_node_id(); - $notification_count = id(new PhabricatorFeedStoryNotification()) + $count_number = id(new PhabricatorFeedStoryNotification()) ->countUnread($user); - $classes = array( - 'phabricator-main-menu-alert-indicator', - ); - if ($notification_count) { - $classes[] = 'phabricator-main-menu-alert-indicator-unread'; + if ($count_number > 999) { + $count_number = "\xE2\x88\x9E"; } - $notification_indicator = javelin_render_tag( + $count_tag = phutil_render_tag( 'span', array( - 'id' => $indicator_id, - 'class' => implode(' ', $classes), + 'id' => $count_id, + 'class' => 'phabricator-main-menu-alert-count' ), - $notification_count); - - $classes = array(); - $classes[] = 'phabricator-main-menu-alert-item'; - $classes[] = 'phabricator-main-menu-alert-item-notification'; - $classes[] = 'autosprite'; - $classes[] = 'main-menu-item-icon-notifications'; + phutil_escape_html($count_number)); - $notification_icon = javelin_render_tag( - 'a', + $icon_tag = phutil_render_tag( + 'span', array( - 'href' => '/notification/', - 'class' => implode(' ', $classes), - 'id' => $menu_id, + 'class' => 'sprite-menu phabricator-main-menu-alert-icon', ), - $notification_indicator); + ''); - $notification_menu = javelin_render_tag( - 'div', + $container_classes = array( + 'phabricator-main-menu-alert-bubble', + 'sprite-menu', + 'alert-notifications', + ); + if ($count_number) { + $container_classes[] = 'alert-unread'; + } + + $bubble_tag = phutil_render_tag( + 'a', array( - 'class' => 'phabricator-main-menu-alert', + 'href' => '/notification/', + 'class' => implode(' ', $container_classes), + 'id' => $bubble_id, ), - $notification_icon); + $icon_tag.$count_tag); Javelin::initBehavior( 'aphlict-dropdown', array( - 'menuID' => $menu_id, - 'indicatorID' => $indicator_id, + 'bubbleID' => $bubble_id, + 'countID' => $count_id, 'dropdownID' => $dropdown_id, )); $notification_dropdown = javelin_render_tag( 'div', array( 'id' => $dropdown_id, 'class' => 'phabricator-notification-menu', 'sigil' => 'phabricator-notification-menu', 'style' => 'display: none;', ), ''); - return array($notification_menu, $notification_dropdown); + return array($bubble_tag, $notification_dropdown); } } diff --git a/webroot/rsrc/css/application/base/main-menu-view.css b/webroot/rsrc/css/application/base/main-menu-view.css index 686a0dfba5..198e2642af 100644 --- a/webroot/rsrc/css/application/base/main-menu-view.css +++ b/webroot/rsrc/css/application/base/main-menu-view.css @@ -1,375 +1,383 @@ /** * @provides phabricator-main-menu-view */ /* - Main Menu ----------------------------------------------------------------- Main menu at the top of every page that has chrome. It reacts to resolution changes in order to behave reasonably on tablets and phones. */ .phabricator-main-menu { background: #2d3236; background-image: url(/rsrc/image/main_texture.png); position: relative; box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.25); height: 44px; z-index: 6; } .phabricator-main-menu a:hover { text-decoration: none; } .device-desktop .phabricator-main-menu { text-align: right; width: 100%; } /* - Main Menu Group ----------------------------------------------------------- Container representing a single item on the main menu. For desktops these lay out horizontally; on phones they switch to vertical. */ .phabricator-main-menu-group { height: 44px; position: relative; } .device-desktop .phabricator-main-menu-group { display: inline-block; text-align: left; } .device-tablet .phabricator-main-menu-group, .device-phone .phabricator-main-menu-group { width: 100%; display: block; } .device-tablet .phabricator-main-menu-group + .phabricator-main-menu-group, .device-phone .phabricator-main-menu-group + .phabricator-main-menu-group { margin-top: 1px; } /* - Logo ---------------------------------------------------------------------- The "Phabricator" logo group in the main menu. On tablet and phone devices, this shows a "reveal" button to expand/collapse the rest of the menu. */ .device-desktop .phabricator-main-menu-group-logo { float: left; } .phabricator-main-menu-logo { display: inline-block; height: 44px; width: 170px; margin-right: 12px; background: 6px 9px url(/rsrc/image/header_logo.png) no-repeat; } .phabricator-main-menu-logo span { display: none; } /* - Expand/Collapse Button ---------------------------------------------------- On phones, the menu switches to a vertical layout and uses a button to expand or collapse the items. */ .phabricator-main-menu-expand-button { position: absolute; right: 10px; top: 10px; display: block; width: 40px; height: 28px; text-align: center; background: #22292d url(/rsrc/image/lines.png) no-repeat 8px 6px; border-radius: 6px; border: 1px solid #111111; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); } .device-desktop .phabricator-main-menu-expand-button { display: none; } .device-tablet .phabricator-main-menu-expand-button, .device-phone .phabricator-main-menu-expand-button { display: block; } .phabricator-main-menu-expand-button span { display: none; } .phabricator-main-menu-reveal .phabricator-main-menu-expand-button { background-color: #55595d; } /* - Icon Menus ---------------------------------------------------------------- These are the small icons for actions like "Settings" and "Log Out" which appear on the right side of the main menu. On tablets and phones these layout vertically. */ .phabricator-main-menu-icon { width: 26px; height: 26px; margin: 9px 6px; display: inline-block; } .device-desktop .phabricator-main-menu-icon-label { display: none; } .device-tablet .phabricator-main-menu-icon-label, .device-phone .phabricator-main-menu-icon-label { font-weight: bold; color: #eeeeee; position: absolute; display: block; line-height: 44px; left: 60px; right: 0px; top: 0px; } .device-tablet .phabricator-main-menu-icon, .device-phone .phabricator-main-menu-icon { margin-left: 20px; position: absolute; } .main-menu-item-icon-profile { background-repeat: no-repeat; background-size: 26px 26px; } .device-desktop .main-menu-item-icon-profile { background-position: 12px 9px; margin: 0 6px; padding: 0 12px; height: 44px; border-width: 0 1px; border-style: solid; border-color: #44494d; } .main-menu-item-icon-profile-not-selected:hover { background-color: #44494d; } .main-menu-item-icon-profile-selected { background-color: #44494d; } /* - Search -------------------------------------------------------------------- The main search input in the menu bar. */ .device-desktop .phabricator-main-menu-search { width: 220px; } .phabricator-main-menu-search-container { padding: 10px 0; position: relative; height: 24px; } .phabricator-main-menu-search-target { position: absolute; top: 46px; } .device-desktop .phabricator-main-menu-search-target { width: 320px; margin-left: -150px; } .device-tablet .phabricator-main-menu-search-target, .device-phone .phabricator-main-menu-search-target { width: 100%; margin-left: -25px; } .device-desktop .phabricator-main-menu-search-container { margin: 0 8px 0 50px; } .device-tablet .phabricator-main-menu-search-container, .device-phone .phabricator-main-menu-search-container { margin: 0 18px 0 60px; } .phabricator-main-menu-search input { outline: 0; margin: 0; width: 100%; right: 0; position: absolute; border: 1px solid #333333; border-radius: 12px; background: #555555; height: 12px; line-height: 12px; box-shadow: 0px 1px 1px rgba(128, 128, 128, 0.25); padding: 6px 32px 6px 10px; } .phabricator-main-menu-search input:focus { background: #c9c9c9; } .phabricator-main-menu-search input.jx-typeahead-placeholder { color: #999999; } .phabricator-main-menu-search button { position: absolute; color: transparent; background: transparent 5px 6px url(/rsrc/image/search.png) no-repeat; border: none; outline: none; box-shadow: none; text-shadow: none; min-width: 0; height: 20px; width: 20px; top: 11px; right: 6px; } .phabricator-main-menu-search-target div.jx-typeahead-results { border-radius: 4px; box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.35); border: 1px solid #33393d; } .phabricator-main-menu-search-target div.jx-typeahead-results a.jx-result { border: 0; } .phabricator-main-menu-search-target div.jx-typeahead-results a.focused, .phabricator-main-menu-search-target div.jx-typeahead-results a:hover { background: #3875d7; } .phabricator-main-search-typeahead-result { display: block; padding: 4px 4px 4px 38px; background-position: 4px 4px; background-size: 25px 25px; background-repeat: no-repeat; } .phabricator-main-search-typeahead-result .result-name { display: block; font-weight: bold; color: #444444; } .focused .phabricator-main-search-typeahead-result .result-name, a:hover .phabricator-main-search-typeahead-result .result-name { color: #eeeeee; } .phabricator-main-search-typeahead-result .result-type { color: #888888; } .focused .phabricator-main-search-typeahead-result .result-type, a:hover .phabricator-main-search-typeahead-result .result-type { color: #dddddd; } /* - Collapsible --------------------------------------------------------------- By default, groups are collapsible, which means they'll be hidden on phones and respond to the menu toggle button. */ .device-tablet .phabricator-main-menu-collapsible, .device-phone .phabricator-main-menu-collapsible { background: #44494d; display: none; } .phabricator-main-menu-reveal { height: auto; } .device-tablet .phabricator-main-menu-reveal .phabricator-main-menu-collapsible, .device-phone .phabricator-main-menu-reveal .phabricator-main-menu-collapsible { display: block; } /* - Alert --------------------------------------------------------------------- Alert menus are like icon menus but don't obey collapse rules. */ -.phabricator-main-menu-alert { +.phabricator-main-menu-alert-bubble { display: inline-block; position: relative; -} - -.phabricator-main-menu-alert-item { width: 26px; height: 26px; - margin: 9px; - display: block; + margin-bottom: 9px; } -.phabricator-main-menu-alert-indicator { - display: none; +.phabricator-main-menu-alert-bubble.alert-unread { + width: 46px; } -.phabricator-main-menu-alert-indicator-unread { +.phabricator-main-menu-alert-icon { position: absolute; - display: block; - - right: 0px; - top: 2px; - padding: 1px 4px 2px; - - background: #dd3333; - - border: 1px solid #aa0000; - font-size: 11px; + width: 14px; + height: 14px; + top: 4px; + left: 5px; +} - box-shadow: 0px 0px 6px rgba(255, 255, 255, 0.5); - border-radius: 6px; +.phabricator-main-menu-alert-count { + position: absolute; font-weight: bold; + line-height: 22px; + top: 1px; + right: 8px; + left: 20px; color: #ffffff; + text-align: center; + display: none; +} + +.phabricator-main-menu-alert-item { + width: 26px; + height: 26px; + margin: 9px; + display: block; +} + +.alert-unread .phabricator-main-menu-alert-count { + display: block; } diff --git a/webroot/rsrc/css/autosprite.css b/webroot/rsrc/css/autosprite.css index 982a668795..9fdfeb6e1c 100644 --- a/webroot/rsrc/css/autosprite.css +++ b/webroot/rsrc/css/autosprite.css @@ -1,729 +1,717 @@ /** * @provides autosprite-css * @generated */ .autosprite { background-image: url(/rsrc/image/autosprite.png); background-repeat: no-repeat; } .main-menu-item-icon-help { background-position: 0px 0px; } .main-menu-item-icon-help-selected { background-position: -31px 0px; } .main-menu-item-icon-help:hover { background-position: -62px 0px; } .main-menu-item-icon-settings { background-position: -93px 0px; } .main-menu-item-icon-settings-selected { background-position: -124px 0px; } .main-menu-item-icon-settings:hover { background-position: -155px 0px; } .main-menu-item-icon-logout { background-position: -186px 0px; } .main-menu-item-icon-logout-selected { background-position: -217px 0px; } .main-menu-item-icon-logout:hover { background-position: -248px 0px; } -.main-menu-item-icon-notifications { - background-position: -279px 0px; -} - -.main-menu-item-icon-notifications-selected { - background-position: -310px 0px; -} - -.main-menu-item-icon-notifications:hover { - background-position: -341px 0px; -} - .main-menu-item-icon-task { - background-position: -372px 0px; + background-position: -279px 0px; } .main-menu-item-icon-task-selected { - background-position: -403px 0px; + background-position: -310px 0px; } .main-menu-item-icon-task:hover { - background-position: -434px 0px; + background-position: -341px 0px; } .app-differential { - background-position: -465px 0px; + background-position: -372px 0px; } .device-desktop .app-differential:hover { - background-position: -496px 0px; + background-position: -403px 0px; } .app-differential-selected { - background-position: -527px 0px; + background-position: -434px 0px; } .app-fact { - background-position: -558px 0px; + background-position: -465px 0px; } .device-desktop .app-fact:hover { - background-position: 0px -31px; + background-position: -496px 0px; } .app-fact-selected { - background-position: -31px -31px; + background-position: -527px 0px; } .app-mail { - background-position: -62px -31px; + background-position: -558px 0px; } .device-desktop .app-mail:hover { - background-position: -93px -31px; + background-position: 0px -31px; } .app-mail-selected { - background-position: -124px -31px; + background-position: -31px -31px; } .app-diffusion { - background-position: -155px -31px; + background-position: -62px -31px; } .device-desktop .app-diffusion:hover { - background-position: -186px -31px; + background-position: -93px -31px; } .app-diffusion-selected { - background-position: -217px -31px; + background-position: -124px -31px; } .app-slowvote { - background-position: -248px -31px; + background-position: -155px -31px; } .device-desktop .app-slowvote:hover { - background-position: -279px -31px; + background-position: -186px -31px; } .app-slowvote-selected { - background-position: -310px -31px; + background-position: -217px -31px; } .app-phriction { - background-position: -341px -31px; + background-position: -248px -31px; } .device-desktop .app-phriction:hover { - background-position: -372px -31px; + background-position: -279px -31px; } .app-phriction-selected { - background-position: -403px -31px; + background-position: -310px -31px; } .app-maniphest { - background-position: -434px -31px; + background-position: -341px -31px; } .device-desktop .app-maniphest:hover { - background-position: -465px -31px; + background-position: -372px -31px; } .app-maniphest-selected { - background-position: -496px -31px; + background-position: -403px -31px; } .app-flags { - background-position: -527px -31px; + background-position: -434px -31px; } .device-desktop .app-flags:hover { - background-position: -558px -31px; + background-position: -465px -31px; } .app-flags-selected { - background-position: 0px -62px; + background-position: -496px -31px; } .app-settings { - background-position: -31px -62px; + background-position: -527px -31px; } .device-desktop .app-settings:hover { - background-position: -62px -62px; + background-position: -558px -31px; } .app-settings-selected { - background-position: -93px -62px; + background-position: 0px -62px; } .app-applications { - background-position: -124px -62px; + background-position: -31px -62px; } .device-desktop .app-applications:hover { - background-position: -155px -62px; + background-position: -62px -62px; } .app-applications-selected { - background-position: -186px -62px; + background-position: -93px -62px; } .app-default { - background-position: -217px -62px; + background-position: -124px -62px; } .device-desktop .app-default:hover { - background-position: -248px -62px; + background-position: -155px -62px; } .app-default-selected { - background-position: -279px -62px; + background-position: -186px -62px; } .app-people { - background-position: -310px -62px; + background-position: -217px -62px; } .device-desktop .app-people:hover { - background-position: -341px -62px; + background-position: -248px -62px; } .app-people-selected { - background-position: -372px -62px; + background-position: -279px -62px; } .app-ponder { - background-position: -403px -62px; + background-position: -310px -62px; } .device-desktop .app-ponder:hover { - background-position: -434px -62px; + background-position: -341px -62px; } .app-ponder-selected { - background-position: -465px -62px; + background-position: -372px -62px; } .app-calendar { - background-position: -496px -62px; + background-position: -403px -62px; } .device-desktop .app-calendar:hover { - background-position: -527px -62px; + background-position: -434px -62px; } .app-calendar-selected { - background-position: -558px -62px; + background-position: -465px -62px; } .app-files { - background-position: 0px -93px; + background-position: -496px -62px; } .device-desktop .app-files:hover { - background-position: -31px -93px; + background-position: -527px -62px; } .app-files-selected { - background-position: -62px -93px; + background-position: -558px -62px; } .app-projects { - background-position: -93px -93px; + background-position: 0px -93px; } .device-desktop .app-projects:hover { - background-position: -124px -93px; + background-position: -31px -93px; } .app-projects-selected { - background-position: -155px -93px; + background-position: -62px -93px; } .app-daemons { - background-position: -186px -93px; + background-position: -93px -93px; } .device-desktop .app-daemons:hover { - background-position: -217px -93px; + background-position: -124px -93px; } .app-daemons-selected { - background-position: -248px -93px; + background-position: -155px -93px; } .app-herald { - background-position: -279px -93px; + background-position: -186px -93px; } .device-desktop .app-herald:hover { - background-position: -310px -93px; + background-position: -217px -93px; } .app-herald-selected { - background-position: -341px -93px; + background-position: -248px -93px; } .app-countdown { - background-position: -372px -93px; + background-position: -279px -93px; } .device-desktop .app-countdown:hover { - background-position: -403px -93px; + background-position: -310px -93px; } .app-countdown-selected { - background-position: -434px -93px; + background-position: -341px -93px; } .app-conduit { - background-position: -465px -93px; + background-position: -372px -93px; } .device-desktop .app-conduit:hover { - background-position: -496px -93px; + background-position: -403px -93px; } .app-conduit-selected { - background-position: -527px -93px; + background-position: -434px -93px; } .app-feed { - background-position: -558px -93px; + background-position: -465px -93px; } .device-desktop .app-feed:hover { - background-position: 0px -124px; + background-position: -496px -93px; } .app-feed-selected { - background-position: -31px -124px; + background-position: -527px -93px; } .app-paste { - background-position: -62px -124px; + background-position: 0px -124px; } .device-desktop .app-paste:hover { - background-position: -93px -124px; + background-position: -31px -124px; } .app-paste-selected { - background-position: -124px -124px; + background-position: -62px -124px; } .app-audit { - background-position: -155px -124px; + background-position: -93px -124px; } .device-desktop .app-audit:hover { - background-position: -186px -124px; + background-position: -124px -124px; } .app-audit-selected { - background-position: -217px -124px; + background-position: -155px -124px; } .app-uiexample { - background-position: -248px -124px; + background-position: -186px -124px; } .device-desktop .app-uiexample:hover { - background-position: -279px -124px; + background-position: -217px -124px; } .app-uiexample-selected { - background-position: -310px -124px; + background-position: -248px -124px; } .app-phpast { - background-position: -341px -124px; + background-position: -279px -124px; } .device-desktop .app-phpast:hover { - background-position: -372px -124px; + background-position: -310px -124px; } .app-phpast-selected { - background-position: -403px -124px; + background-position: -341px -124px; } .app-owners { - background-position: -434px -124px; + background-position: -372px -124px; } .device-desktop .app-owners:hover { - background-position: -465px -124px; + background-position: -403px -124px; } .app-owners-selected { - background-position: -496px -124px; + background-position: -434px -124px; } .app-phid { - background-position: -527px -124px; + background-position: -465px -124px; } .device-desktop .app-phid:hover { - background-position: -558px -124px; + background-position: -496px -124px; } .app-phid-selected { - background-position: 0px -155px; + background-position: -527px -124px; } .app-diviner { - background-position: -31px -155px; + background-position: 0px -155px; } .device-desktop .app-diviner:hover { - background-position: -62px -155px; + background-position: -31px -155px; } .app-diviner-selected { - background-position: -93px -155px; + background-position: -62px -155px; } .app-repositories { - background-position: -124px -155px; + background-position: -93px -155px; } .device-desktop .app-repositories:hover { - background-position: -155px -155px; + background-position: -124px -155px; } .app-repositories-selected { - background-position: -186px -155px; + background-position: -155px -155px; } .app-phame { - background-position: -217px -155px; + background-position: -186px -155px; } .device-desktop .app-phame:hover { - background-position: -248px -155px; + background-position: -217px -155px; } .app-phame-selected { - background-position: -279px -155px; + background-position: -248px -155px; } .app-macro { - background-position: -310px -155px; + background-position: -279px -155px; } .device-desktop .app-macro:hover { - background-position: -341px -155px; + background-position: -310px -155px; } .app-macro-selected { - background-position: -372px -155px; + background-position: -341px -155px; } .app-releeph { - background-position: -403px -155px; + background-position: -372px -155px; } .device-desktop .app-releeph:hover { - background-position: -434px -155px; + background-position: -403px -155px; } .app-releeph-selected { - background-position: -465px -155px; + background-position: -434px -155px; } .app-drydock { - background-position: -496px -155px; + background-position: -465px -155px; } .device-desktop .app-drydock:hover { - background-position: -527px -155px; + background-position: -496px -155px; } .app-drydock-selected { - background-position: -558px -155px; + background-position: -527px -155px; } .app-differential-large { background-position: 0px -186px; } .device-desktop .phabricator-application-launch-container:hover .app-differential-large /* hover */ { background-position: -61px -186px; } .app-fact-large { background-position: -122px -186px; } .device-desktop .phabricator-application-launch-container:hover .app-fact-large /* hover */ { background-position: -183px -186px; } .app-mail-large { background-position: -244px -186px; } .device-desktop .phabricator-application-launch-container:hover .app-mail-large /* hover */ { background-position: -305px -186px; } .app-diffusion-large { background-position: -366px -186px; } .device-desktop .phabricator-application-launch-container:hover .app-diffusion-large /* hover */ { background-position: -427px -186px; } .app-slowvote-large { background-position: -488px -186px; } .device-desktop .phabricator-application-launch-container:hover .app-slowvote-large /* hover */ { background-position: -549px -186px; } .app-phriction-large { background-position: 0px -247px; } .device-desktop .phabricator-application-launch-container:hover .app-phriction-large /* hover */ { background-position: -61px -247px; } .app-maniphest-large { background-position: -122px -247px; } .device-desktop .phabricator-application-launch-container:hover .app-maniphest-large /* hover */ { background-position: -183px -247px; } .app-flags-large { background-position: -244px -247px; } .device-desktop .phabricator-application-launch-container:hover .app-flags-large /* hover */ { background-position: -305px -247px; } .app-settings-large { background-position: -366px -247px; } .device-desktop .phabricator-application-launch-container:hover .app-settings-large /* hover */ { background-position: -427px -247px; } .app-applications-large { background-position: -488px -247px; } .device-desktop .phabricator-application-launch-container:hover .app-applications-large /* hover */ { background-position: -549px -247px; } .app-default-large { background-position: 0px -308px; } .device-desktop .phabricator-application-launch-container:hover .app-default-large /* hover */ { background-position: -61px -308px; } .app-people-large { background-position: -122px -308px; } .device-desktop .phabricator-application-launch-container:hover .app-people-large /* hover */ { background-position: -183px -308px; } .app-ponder-large { background-position: -244px -308px; } .device-desktop .phabricator-application-launch-container:hover .app-ponder-large /* hover */ { background-position: -305px -308px; } .app-calendar-large { background-position: -366px -308px; } .device-desktop .phabricator-application-launch-container:hover .app-calendar-large /* hover */ { background-position: -427px -308px; } .app-files-large { background-position: -488px -308px; } .device-desktop .phabricator-application-launch-container:hover .app-files-large /* hover */ { background-position: -549px -308px; } .app-projects-large { background-position: 0px -369px; } .device-desktop .phabricator-application-launch-container:hover .app-projects-large /* hover */ { background-position: -61px -369px; } .app-daemons-large { background-position: -122px -369px; } .device-desktop .phabricator-application-launch-container:hover .app-daemons-large /* hover */ { background-position: -183px -369px; } .app-herald-large { background-position: -244px -369px; } .device-desktop .phabricator-application-launch-container:hover .app-herald-large /* hover */ { background-position: -305px -369px; } .app-countdown-large { background-position: -366px -369px; } .device-desktop .phabricator-application-launch-container:hover .app-countdown-large /* hover */ { background-position: -427px -369px; } .app-conduit-large { background-position: -488px -369px; } .device-desktop .phabricator-application-launch-container:hover .app-conduit-large /* hover */ { background-position: 0px -430px; } .app-feed-large { background-position: -61px -430px; } .device-desktop .phabricator-application-launch-container:hover .app-feed-large /* hover */ { background-position: -122px -430px; } .app-paste-large { background-position: -183px -430px; } .device-desktop .phabricator-application-launch-container:hover .app-paste-large /* hover */ { background-position: -244px -430px; } .app-audit-large { background-position: -305px -430px; } .device-desktop .phabricator-application-launch-container:hover .app-audit-large /* hover */ { background-position: -366px -430px; } .app-uiexample-large { background-position: -427px -430px; } .device-desktop .phabricator-application-launch-container:hover .app-uiexample-large /* hover */ { background-position: -488px -430px; } .app-phpast-large { background-position: 0px -491px; } .device-desktop .phabricator-application-launch-container:hover .app-phpast-large /* hover */ { background-position: -61px -491px; } .app-owners-large { background-position: -122px -491px; } .device-desktop .phabricator-application-launch-container:hover .app-owners-large /* hover */ { background-position: -183px -491px; } .app-phid-large { background-position: -244px -491px; } .device-desktop .phabricator-application-launch-container:hover .app-phid-large /* hover */ { background-position: -305px -491px; } .app-diviner-large { background-position: -366px -491px; } .device-desktop .phabricator-application-launch-container:hover .app-diviner-large /* hover */ { background-position: -427px -491px; } .app-repositories-large { background-position: -488px -491px; } .device-desktop .phabricator-application-launch-container:hover .app-repositories-large /* hover */ { background-position: 0px -552px; } .app-phame-large { background-position: -61px -552px; } .device-desktop .phabricator-application-launch-container:hover .app-phame-large /* hover */ { background-position: -122px -552px; } .app-macro-large { background-position: -183px -552px; } .device-desktop .phabricator-application-launch-container:hover .app-macro-large /* hover */ { background-position: -244px -552px; } .app-releeph-large { background-position: -305px -552px; } .device-desktop .phabricator-application-launch-container:hover .app-releeph-large /* hover */ { background-position: -366px -552px; } .app-drydock-large { background-position: -427px -552px; } .device-desktop .phabricator-application-launch-container:hover .app-drydock-large /* hover */ { background-position: -488px -552px; } diff --git a/webroot/rsrc/css/sprite-menu.css b/webroot/rsrc/css/sprite-menu.css new file mode 100644 index 0000000000..a5a62bcfcb --- /dev/null +++ b/webroot/rsrc/css/sprite-menu.css @@ -0,0 +1,38 @@ +/** + * @provides sprite-menu-css + * @generated + */ + +.sprite-menu { + background-image: url(/rsrc/image/sprite-menu.png); + background-repeat: no-repeat; +} + +@media +only screen and (min-device-pixel-ratio: 1.5), +only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .sprite-menu { + background-image: url(/rsrc/image/sprite-menu-X2.png); + background-size: 47px 69px; + } +} + +.alert-notifications .phabricator-main-menu-alert-icon { + background-position: 0px 0px; +} + +.alert-notifications:hover .phabricator-main-menu-alert-icon { + background-position: -15px 0px; +} + +.phabricator-main-menu-alert-bubble.alert-unread { + background-position: 0px -15px; +} + +.phabricator-main-menu-alert-bubble { + background-position: 0px -42px; +} + +.alert-notifications.alert-unread .phabricator-main-menu-alert-icon { + background-position: -27px -42px; +} diff --git a/webroot/rsrc/image/autosprite.png b/webroot/rsrc/image/autosprite.png index 98e0dc238f..2fe3829f8e 100644 Binary files a/webroot/rsrc/image/autosprite.png and b/webroot/rsrc/image/autosprite.png differ diff --git a/webroot/rsrc/image/sprite-menu-X2.png b/webroot/rsrc/image/sprite-menu-X2.png new file mode 100644 index 0000000000..a89c3ef5ed Binary files /dev/null and b/webroot/rsrc/image/sprite-menu-X2.png differ diff --git a/webroot/rsrc/image/sprite-menu.png b/webroot/rsrc/image/sprite-menu.png new file mode 100644 index 0000000000..b471e69f18 Binary files /dev/null and b/webroot/rsrc/image/sprite-menu.png differ diff --git a/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js b/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js index 1c9ed4e7bf..74b6809472 100644 --- a/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js +++ b/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js @@ -1,73 +1,79 @@ /** * @provides javelin-behavior-aphlict-dropdown * @requires javelin-behavior * javelin-request * javelin-stratcom * javelin-vector * javelin-dom */ JX.behavior('aphlict-dropdown', function(config) { var dropdown = JX.$(config.dropdownID); - var indicator = JX.$(config.indicatorID); - var menu = JX.$(config.menuID); + var count = JX.$(config.countID); + var bubble = JX.$(config.bubbleID); var visible = false; var request = null; function refresh() { if (request) { //already fetching return; } request = new JX.Request('/notification/panel/', function(response) { - JX.DOM.setContent(indicator, response.number); + var display = (response.number > 999) + ? "\u221E" + : response.number; + + JX.DOM.setContent(count, display); if (response.number == 0) { - JX.DOM.alterClass(indicator, - "phabricator-main-menu-alert-indicator-unread", false); + JX.DOM.alterClass(bubble, 'alert-unread', false); } else { - JX.DOM.alterClass(indicator, - "phabricator-main-menu-alert-indicator-unread", true); + JX.DOM.alterClass(bubble, 'alert-unread', true); } JX.DOM.setContent(dropdown, JX.$H(response.content)); request = null; }); request.send(); } - refresh(); - JX.Stratcom.listen( 'click', null, function(e) { if(e.getNode('phabricator-notification-menu')) { // Click is inside the dropdown. return; } JX.DOM.hide(dropdown); visible = false; }); JX.DOM.listen( - menu, + bubble, 'click', null, function(e) { + if (!e.isNormalClick()) { + return; + } + if (visible) { JX.DOM.hide(dropdown); } else { - var p = JX.$V(menu); + refresh(); + + var p = JX.$V(bubble); p.y = null; p.x -= 6; p.setPos(dropdown); JX.DOM.show(dropdown); } visible = !visible; e.kill(); } ) JX.Stratcom.listen('notification-panel-update', null, refresh); });