{"version":3,"file":"js/application-f0fe55eeee503ffb4a81.js","mappings":"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","sources":["webpack:///./app/components/ sync \\.s","webpack:///./app/javascript/src/javascripts/ sync \\.js(\\.erb)","webpack:///./app/javascript/src/styles/ sync \\.s","webpack:///./app/javascript/vendor/ sync \\.js$","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/src/javascripts/artist_commentaries.js","webpack:///./app/javascript/src/javascripts/autocomplete.js","webpack:///./app/javascript/src/javascripts/blacklists.js","webpack:///./app/javascript/src/javascripts/comment_component.js","webpack:///./app/javascript/src/javascripts/comment_votes_tooltip_component.js","webpack:///./app/javascript/src/javascripts/common.js","webpack:///./app/javascript/src/javascripts/cookie.js","webpack:///./app/javascript/src/javascripts/current_user.js","webpack:///./app/javascript/src/javascripts/device.js","webpack:///./app/javascript/src/javascripts/draggable.js","webpack:///./app/javascript/src/javascripts/dtext.js","webpack:///./app/javascript/src/javascripts/favorite_groups.js","webpack:///./app/javascript/src/javascripts/favorites_tooltip_component.js","webpack:///./app/javascript/src/javascripts/file_upload_component.js","webpack:///./app/javascript/src/javascripts/form_validator.js","webpack:///./app/javascript/src/javascripts/forum_post_component.js","webpack:///./app/javascript/src/javascripts/help_tooltip_component.js","webpack:///./app/javascript/src/javascripts/iqdb_queries.js","webpack:///./app/javascript/src/javascripts/media_asset_component.js","webpack:///./app/javascript/src/javascripts/mod_queue.js","webpack:///./app/javascript/src/javascripts/news_updates.js","webpack:///./app/javascript/src/javascripts/notes.js","webpack:///./app/javascript/src/javascripts/pools.js","webpack:///./app/javascript/src/javascripts/popup_menu_component.js","webpack:///./app/javascript/src/javascripts/post_mode_menu.js","webpack:///./app/javascript/src/javascripts/post_tooltips.js","webpack:///./app/javascript/src/javascripts/post_version.js","webpack:///./app/javascript/src/javascripts/post_votes_tooltip_component.js","webpack:///./app/javascript/src/javascripts/posts.js","webpack:///./app/javascript/src/javascripts/preview_size_menu_component.js","webpack:///./app/javascript/src/javascripts/related_tag.js","webpack:///./app/javascript/src/javascripts/responsive.js","webpack:///./app/javascript/src/javascripts/shortcuts.js","webpack:///./app/javascript/src/javascripts/source_data_component.js","webpack:///./app/javascript/src/javascripts/tag_counter.js","webpack:///./app/javascript/src/javascripts/time_series_component.js","webpack:///./app/javascript/src/javascripts/ugoira.js","webpack:///./app/javascript/src/javascripts/uploads.js","webpack:///./app/javascript/src/javascripts/user_tooltips.js","webpack:///./app/javascript/src/javascripts/utility.js","webpack:///./app/javascript/vendor/pixiv-ugoira-player.js","webpack:///./public/images/ sync ^\\.\\/.*$"],"sourcesContent":["var map = {\n\t\"./comment_component/comment_component.scss\": 32662,\n\t\"./comment_votes_tooltip_component/comment_votes_tooltip_component.scss\": 46330,\n\t\"./favorites_tooltip_component/favorites_tooltip_component.scss\": 13130,\n\t\"./file_upload_component/file_upload_component.scss\": 61190,\n\t\"./forum_post_component/forum_post_component.scss\": 85808,\n\t\"./media_asset_component/media_asset_component.scss\": 22650,\n\t\"./media_asset_gallery_component/media_asset_gallery_component.scss\": 98398,\n\t\"./media_asset_preview_component/media_asset_preview_component.scss\": 48802,\n\t\"./paginator_component/paginator_component.scss\": 35098,\n\t\"./popup_menu_component/popup_menu_component.scss\": 92708,\n\t\"./post_gallery_component/post_gallery_component.scss\": 53458,\n\t\"./post_navbar_component/post_navbar_component.scss\": 85574,\n\t\"./post_preview_component/post_preview_component.scss\": 55882,\n\t\"./post_votes_component/post_votes_component.scss\": 61256,\n\t\"./post_votes_tooltip_component/post_votes_tooltip_component.scss\": 56692,\n\t\"./source_data_component/source_data_component.scss\": 55382,\n\t\"./tab_panel_component/tab_panel_component.scss\": 17194,\n\t\"./tag_list_component/tag_list_component.html.scss\": 91813,\n\t\"comment_component/comment_component.scss\": 32662,\n\t\"comment_votes_tooltip_component/comment_votes_tooltip_component.scss\": 46330,\n\t\"favorites_tooltip_component/favorites_tooltip_component.scss\": 13130,\n\t\"file_upload_component/file_upload_component.scss\": 61190,\n\t\"forum_post_component/forum_post_component.scss\": 85808,\n\t\"media_asset_component/media_asset_component.scss\": 22650,\n\t\"media_asset_gallery_component/media_asset_gallery_component.scss\": 98398,\n\t\"media_asset_preview_component/media_asset_preview_component.scss\": 48802,\n\t\"paginator_component/paginator_component.scss\": 35098,\n\t\"popup_menu_component/popup_menu_component.scss\": 92708,\n\t\"post_gallery_component/post_gallery_component.scss\": 53458,\n\t\"post_navbar_component/post_navbar_component.scss\": 85574,\n\t\"post_preview_component/post_preview_component.scss\": 55882,\n\t\"post_votes_component/post_votes_component.scss\": 61256,\n\t\"post_votes_tooltip_component/post_votes_tooltip_component.scss\": 56692,\n\t\"source_data_component/source_data_component.scss\": 55382,\n\t\"tab_panel_component/tab_panel_component.scss\": 17194,\n\t\"tag_list_component/tag_list_component.html.scss\": 91813\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 58140;","var map = {\n\t\"./artist_commentaries.js\": 87478,\n\t\"./autocomplete.js\": 10919,\n\t\"./blacklists.js\": 75971,\n\t\"./comment_component.js\": 82426,\n\t\"./comment_votes_tooltip_component.js\": 36232,\n\t\"./common.js\": 66030,\n\t\"./cookie.js\": 13229,\n\t\"./current_user.js\": 65494,\n\t\"./device.js\": 38505,\n\t\"./draggable.js\": 11660,\n\t\"./dtext.js\": 97084,\n\t\"./favorite_groups.js\": 23134,\n\t\"./favorites_tooltip_component.js\": 5250,\n\t\"./file_upload_component.js\": 8053,\n\t\"./form_validator.js\": 20904,\n\t\"./forum_post_component.js\": 63727,\n\t\"./help_tooltip_component.js\": 91048,\n\t\"./iqdb_queries.js\": 67896,\n\t\"./media_asset_component.js\": 91624,\n\t\"./mod_queue.js\": 84431,\n\t\"./news_updates.js\": 12805,\n\t\"./notes.js\": 6490,\n\t\"./pools.js\": 44784,\n\t\"./popup_menu_component.js\": 82971,\n\t\"./post_mode_menu.js\": 25609,\n\t\"./post_tooltips.js\": 7936,\n\t\"./post_version.js\": 52870,\n\t\"./post_votes_tooltip_component.js\": 98863,\n\t\"./posts.js\": 94636,\n\t\"./preview_size_menu_component.js\": 29617,\n\t\"./related_tag.js\": 13287,\n\t\"./responsive.js\": 58349,\n\t\"./shortcuts.js\": 12148,\n\t\"./source_data_component.js\": 24901,\n\t\"./tag_counter.js\": 94764,\n\t\"./time_series_component.js\": 27276,\n\t\"./ugoira.js\": 38622,\n\t\"./uploads.js\": 83245,\n\t\"./user_tooltips.js\": 4919,\n\t\"./utility.js\": 74035,\n\t\"src/javascripts/artist_commentaries.js\": 87478,\n\t\"src/javascripts/autocomplete.js\": 10919,\n\t\"src/javascripts/blacklists.js\": 75971,\n\t\"src/javascripts/comment_component.js\": 82426,\n\t\"src/javascripts/comment_votes_tooltip_component.js\": 36232,\n\t\"src/javascripts/common.js\": 66030,\n\t\"src/javascripts/cookie.js\": 13229,\n\t\"src/javascripts/current_user.js\": 65494,\n\t\"src/javascripts/device.js\": 38505,\n\t\"src/javascripts/draggable.js\": 11660,\n\t\"src/javascripts/dtext.js\": 97084,\n\t\"src/javascripts/favorite_groups.js\": 23134,\n\t\"src/javascripts/favorites_tooltip_component.js\": 5250,\n\t\"src/javascripts/file_upload_component.js\": 8053,\n\t\"src/javascripts/form_validator.js\": 20904,\n\t\"src/javascripts/forum_post_component.js\": 63727,\n\t\"src/javascripts/help_tooltip_component.js\": 91048,\n\t\"src/javascripts/iqdb_queries.js\": 67896,\n\t\"src/javascripts/media_asset_component.js\": 91624,\n\t\"src/javascripts/mod_queue.js\": 84431,\n\t\"src/javascripts/news_updates.js\": 12805,\n\t\"src/javascripts/notes.js\": 6490,\n\t\"src/javascripts/pools.js\": 44784,\n\t\"src/javascripts/popup_menu_component.js\": 82971,\n\t\"src/javascripts/post_mode_menu.js\": 25609,\n\t\"src/javascripts/post_tooltips.js\": 7936,\n\t\"src/javascripts/post_version.js\": 52870,\n\t\"src/javascripts/post_votes_tooltip_component.js\": 98863,\n\t\"src/javascripts/posts.js\": 94636,\n\t\"src/javascripts/preview_size_menu_component.js\": 29617,\n\t\"src/javascripts/related_tag.js\": 13287,\n\t\"src/javascripts/responsive.js\": 58349,\n\t\"src/javascripts/shortcuts.js\": 12148,\n\t\"src/javascripts/source_data_component.js\": 24901,\n\t\"src/javascripts/tag_counter.js\": 94764,\n\t\"src/javascripts/time_series_component.js\": 27276,\n\t\"src/javascripts/ugoira.js\": 38622,\n\t\"src/javascripts/uploads.js\": 83245,\n\t\"src/javascripts/user_tooltips.js\": 4919,\n\t\"src/javascripts/utility.js\": 74035\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 49958;","var map = {\n\t\"./base/000_vars.scss\": 67145,\n\t\"./base/010_reset.scss\": 24539,\n\t\"./base/020_base.scss\": 348,\n\t\"./base/030_links.scss\": 39035,\n\t\"./base/040_colors.scss\": 64459,\n\t\"./common/autocomplete.scss\": 87142,\n\t\"./common/blacklists.scss\": 3730,\n\t\"./common/buttons.scss\": 51527,\n\t\"./common/diffs.scss\": 52590,\n\t\"./common/dtext.scss\": 42849,\n\t\"./common/fonts.css\": 32478,\n\t\"./common/inline.scss\": 98671,\n\t\"./common/jquery_ui_custom.scss\": 25631,\n\t\"./common/main_layout.scss\": 63386,\n\t\"./common/messages.scss\": 25358,\n\t\"./common/news.scss\": 40037,\n\t\"./common/notices.scss\": 56127,\n\t\"./common/page_header.scss\": 62147,\n\t\"./common/recent_posts.scss\": 60637,\n\t\"./common/simple_form.scss\": 80567,\n\t\"./common/tables.scss\": 74199,\n\t\"./common/tags.scss\": 88723,\n\t\"./common/user_styles.scss\": 5532,\n\t\"./common/utilities.scss\": 42110,\n\t\"./common/versions.scss\": 46175,\n\t\"./specific/artists.scss\": 50519,\n\t\"./specific/bans.scss\": 62019,\n\t\"./specific/common_tooltips.scss\": 82869,\n\t\"./specific/dmails.scss\": 45485,\n\t\"./specific/error.scss\": 88041,\n\t\"./specific/forum.scss\": 76294,\n\t\"./specific/notes.scss\": 60994,\n\t\"./specific/pools.scss\": 55356,\n\t\"./specific/post_mode_menu.scss\": 6739,\n\t\"./specific/post_tooltips.scss\": 88624,\n\t\"./specific/post_versions.scss\": 25697,\n\t\"./specific/posts.scss\": 32,\n\t\"./specific/related_tags.scss\": 20972,\n\t\"./specific/uploads.scss\": 66229,\n\t\"./specific/user_feedback.scss\": 54600,\n\t\"./specific/user_tooltips.scss\": 26691,\n\t\"./specific/user_upgrades.scss\": 6910,\n\t\"./specific/users.scss\": 5115,\n\t\"./specific/wiki_page_versions.scss\": 70603,\n\t\"./specific/z_responsive.scss\": 45035,\n\t\"src/styles/base/000_vars.scss\": 67145,\n\t\"src/styles/base/010_reset.scss\": 24539,\n\t\"src/styles/base/020_base.scss\": 348,\n\t\"src/styles/base/030_links.scss\": 39035,\n\t\"src/styles/base/040_colors.scss\": 64459,\n\t\"src/styles/common/autocomplete.scss\": 87142,\n\t\"src/styles/common/blacklists.scss\": 3730,\n\t\"src/styles/common/buttons.scss\": 51527,\n\t\"src/styles/common/diffs.scss\": 52590,\n\t\"src/styles/common/dtext.scss\": 42849,\n\t\"src/styles/common/fonts.css\": 32478,\n\t\"src/styles/common/inline.scss\": 98671,\n\t\"src/styles/common/jquery_ui_custom.scss\": 25631,\n\t\"src/styles/common/main_layout.scss\": 63386,\n\t\"src/styles/common/messages.scss\": 25358,\n\t\"src/styles/common/news.scss\": 40037,\n\t\"src/styles/common/notices.scss\": 56127,\n\t\"src/styles/common/page_header.scss\": 62147,\n\t\"src/styles/common/recent_posts.scss\": 60637,\n\t\"src/styles/common/simple_form.scss\": 80567,\n\t\"src/styles/common/tables.scss\": 74199,\n\t\"src/styles/common/tags.scss\": 88723,\n\t\"src/styles/common/user_styles.scss\": 5532,\n\t\"src/styles/common/utilities.scss\": 42110,\n\t\"src/styles/common/versions.scss\": 46175,\n\t\"src/styles/specific/artists.scss\": 50519,\n\t\"src/styles/specific/bans.scss\": 62019,\n\t\"src/styles/specific/common_tooltips.scss\": 82869,\n\t\"src/styles/specific/dmails.scss\": 45485,\n\t\"src/styles/specific/error.scss\": 88041,\n\t\"src/styles/specific/forum.scss\": 76294,\n\t\"src/styles/specific/notes.scss\": 60994,\n\t\"src/styles/specific/pools.scss\": 55356,\n\t\"src/styles/specific/post_mode_menu.scss\": 6739,\n\t\"src/styles/specific/post_tooltips.scss\": 88624,\n\t\"src/styles/specific/post_versions.scss\": 25697,\n\t\"src/styles/specific/posts.scss\": 32,\n\t\"src/styles/specific/related_tags.scss\": 20972,\n\t\"src/styles/specific/uploads.scss\": 66229,\n\t\"src/styles/specific/user_feedback.scss\": 54600,\n\t\"src/styles/specific/user_tooltips.scss\": 26691,\n\t\"src/styles/specific/user_upgrades.scss\": 6910,\n\t\"src/styles/specific/users.scss\": 5115,\n\t\"src/styles/specific/wiki_page_versions.scss\": 70603,\n\t\"src/styles/specific/z_responsive.scss\": 45035\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 19819;","var map = {\n\t\"./pixiv-ugoira-player.js\": 88598,\n\t\"vendor/pixiv-ugoira-player.js\": 88598\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 13178;","/* eslint no-console:0 */\nfunction importAll(r) {\n r.keys().forEach(r);\n}\n\n// This will only import the necessary polyfills needed by the current browserslist setting in package.json, not\n// everything. See @babel/preset-env.\nimport \"core-js\";\n\nrequire('hammerjs');\nrequire('jquery-hotkeys');\nimport Alpine from 'alpinejs';\nimport morph from '@alpinejs/morph';\nimport persist from '@alpinejs/persist'\n\n// should start looking for nodejs replacements\nimportAll(require.context('../vendor', true, /\\.js$/));\n\nrequire.context(\"../../../public/images\", true);\n\nimport jQuery from 'jquery';\nrequire(\"jquery-ui/ui/widgets/autocomplete\");\nrequire(\"jquery-ui/ui/widgets/button\");\nrequire(\"jquery-ui/ui/widgets/dialog\");\nrequire(\"jquery-ui/themes/base/core.css\");\nrequire(\"jquery-ui/themes/base/autocomplete.css\");\nrequire(\"jquery-ui/themes/base/button.css\");\nrequire(\"jquery-ui/themes/base/dialog.css\");\nrequire(\"jquery-ui/themes/base/theme.css\");\n\nimport Rails from '@rails/ujs';\nRails.start();\n\nimport 'tippy.js/dist/tippy.css';\n\nimportAll(require.context('../src/javascripts', true, /\\.js(\\.erb)?$/));\nimportAll(require.context('../src/styles', true, /\\.s?css(?:\\.erb)?$/));\nimportAll(require.context('../../components', true, /\\.s?css(?:\\.erb)?$/));\n\nimport Autocomplete from \"../src/javascripts/autocomplete.js\";\nimport ArtistCommentary from \"../src/javascripts/artist_commentaries.js\";\nimport Blacklist from \"../src/javascripts/blacklists.js\";\nimport CommentComponent from \"../src/javascripts/comment_component.js\";\nimport CommentVotesTooltipComponent from \"../src/javascripts/comment_votes_tooltip_component.js\";\nimport Cookie from \"../src/javascripts/cookie.js\";\nimport CurrentUser from \"../src/javascripts/current_user.js\";\nimport Device from \"../src/javascripts/device.js\";\nimport Draggable from \"../src/javascripts/draggable.js\";\nimport Dtext from \"../src/javascripts/dtext.js\";\nimport FavoritesTooltipComponent from \"../src/javascripts/favorites_tooltip_component.js\";\nimport FileUploadComponent from \"../src/javascripts/file_upload_component.js\";\nimport ForumPostComponent from \"../src/javascripts/forum_post_component.js\";\nimport FormValidator from \"../src/javascripts/form_validator.js\";\nimport HelpTooltipComponent from \"../src/javascripts/help_tooltip_component.js\";\nimport IqdbQuery from \"../src/javascripts/iqdb_queries.js\";\nimport Note from \"../src/javascripts/notes.js\";\nimport MediaAssetComponent from \"../src/javascripts/media_asset_component.js\";\nimport PopupMenuComponent from \"../src/javascripts/popup_menu_component.js\";\nimport Post from \"../src/javascripts/posts.js\";\nimport PostModeMenu from \"../src/javascripts/post_mode_menu.js\";\nimport PostTooltip from \"../src/javascripts/post_tooltips.js\";\nimport PostVotesTooltipComponent from \"../src/javascripts/post_votes_tooltip_component.js\";\nimport PreviewSizeMenuComponent from \"../src/javascripts/preview_size_menu_component.js\";\nimport RelatedTag from \"../src/javascripts/related_tag.js\";\nimport Shortcuts from \"../src/javascripts/shortcuts.js\";\nimport TagCounter from \"../src/javascripts/tag_counter.js\";\nimport TimeSeriesComponent from \"../src/javascripts/time_series_component.js\";\nimport Upload from \"../src/javascripts/uploads.js\";\nimport UserTooltip from \"../src/javascripts/user_tooltips.js\";\nimport Utility from \"../src/javascripts/utility.js\";\nimport Ugoira from \"../src/javascripts/ugoira.js\"\n\nlet Danbooru = {};\nDanbooru.Autocomplete = Autocomplete;\nDanbooru.ArtistCommentary = ArtistCommentary;\nDanbooru.Blacklist = Blacklist;\nDanbooru.CommentComponent = CommentComponent;\nDanbooru.CommentVotesTooltipComponent = CommentVotesTooltipComponent;\nDanbooru.Cookie = Cookie;\nDanbooru.CurrentUser = CurrentUser;\nDanbooru.Device = Device;\nDanbooru.Draggable = Draggable;\nDanbooru.Dtext = Dtext;\nDanbooru.FavoritesTooltipComponent = FavoritesTooltipComponent;\nDanbooru.FileUploadComponent = FileUploadComponent;\nDanbooru.ForumPostComponent = ForumPostComponent;\nDanbooru.FormValidator = FormValidator;\nDanbooru.HelpTooltipComponent = HelpTooltipComponent;\nDanbooru.IqdbQuery = IqdbQuery;\nDanbooru.MediaAssetComponent = MediaAssetComponent;\nDanbooru.Note = Note;\nDanbooru.PopupMenuComponent = PopupMenuComponent;\nDanbooru.Post = Post;\nDanbooru.PostModeMenu = PostModeMenu;\nDanbooru.PostTooltip = PostTooltip;\nDanbooru.PostVotesTooltipComponent = PostVotesTooltipComponent;\nDanbooru.PreviewSizeMenuComponent = PreviewSizeMenuComponent;\nDanbooru.RelatedTag = RelatedTag;\nDanbooru.Shortcuts = Shortcuts;\nDanbooru.TagCounter = TagCounter;\nDanbooru.TimeSeriesComponent = TimeSeriesComponent;\nDanbooru.Upload = Upload;\nDanbooru.UserTooltip = UserTooltip;\nDanbooru.Utility = Utility;\nDanbooru.Ugoira = Ugoira;\n\nDanbooru.notice = Utility.notice;\nDanbooru.error = Utility.error;\n\nwindow.$ = jQuery;\nwindow.jQuery = jQuery;\nwindow.Alpine = Alpine;\nwindow.Danbooru = Danbooru;\n\nAlpine.plugin(morph);\nAlpine.plugin(persist)\n$(() => Alpine.start());\n","import Utility from \"./utility\";\nimport Rails from \"@rails/ujs\";\n\nlet ArtistCommentary = {};\n\nArtistCommentary.initialize_all = function() {\n if ($(\"#c-posts\").length && $(\"#a-show\").length) {\n if ($(\"#original-artist-commentary\").length && $(\"#translated-artist-commentary\").length) {\n this.initialize_commentary_display_tabs();\n }\n\n this.initialize_edit_commentary_dialog();\n }\n}\n\nArtistCommentary.initialize_commentary_display_tabs = function() {\n $(\"#commentary-sections li a\").on(\"click.danbooru\", function(e) {\n if (e.target.hash === \"#original\") {\n $(\"#original-artist-commentary\").show();\n $(\"#translated-artist-commentary\").hide();\n } else if (e.target.hash === \"#translated\") {\n $(\"#original-artist-commentary\").hide();\n $(\"#translated-artist-commentary\").show();\n }\n\n $(\"#commentary-sections li\").removeClass(\"active\");\n $(e.target).parent(\"li\").addClass(\"active\");\n e.preventDefault();\n });\n}\n\nArtistCommentary.initialize_edit_commentary_dialog = function() {\n $(\"#add-commentary-dialog\").dialog({\n autoOpen: false,\n width: 700,\n buttons: {\n \"Submit\": function() {\n let form = $(\"#add-commentary-dialog #edit-commentary\").get(0);\n Rails.fire(form, \"submit\");\n $(this).dialog(\"close\");\n },\n \"Cancel\": function() {\n $(this).dialog(\"close\");\n }\n }\n });\n\n $('#add-commentary-dialog #edit-commentary').submit(function() {\n $('#add-commentary-dialog').dialog('close');\n });\n\n $(\"#add-commentary\").on(\"click.danbooru\", function(e) {\n e.preventDefault();\n $(\"#add-commentary-dialog\").dialog(\"open\");\n });\n\n $('#fetch-commentary select[name=\"commentary_source_type\"]').change(function() {\n $(\"#fetch-commentary input\").toggle();\n });\n\n $('#fetch-commentary button[type=\"submit\"]').on(\"click.danbooru\", ArtistCommentary.fetch_commentary);\n}\n\nArtistCommentary.fetch_commentary = function() {\n var commentary = \"\";\n Utility.notice(\"Fetching artist commentary...\");\n\n var type = $('#fetch-commentary select[name=\"commentary_source_type\"]').val();\n if (type === \"Source\") {\n var source = $('#fetch-commentary input[name=\"commentary_source\"]').val();\n commentary = ArtistCommentary.from_source(source);\n } else if (type === \"Post\") {\n var id = $('#fetch-commentary input[name=\"commentary_post_id\"]').val();\n commentary = ArtistCommentary.from_post_id(id);\n }\n\n commentary.then(ArtistCommentary.fill_commentary).then(function (success) {\n var message = success ? \"Artist commentary copied.\" : \"Artist commentary copied; conflicting fields ignored.\";\n Utility.notice(message);\n }).catch(function () {\n Utility.notice(\"Fetching artist commentary failed.\");\n });\n\n return false;\n};\n\nArtistCommentary.from_source = function(source) {\n return $.get(\"/source.json?url=\" + encodeURIComponent(source)).then(function(data) {\n return {\n original_title: data.artist_commentary.dtext_title,\n original_description: data.artist_commentary.dtext_description,\n source: source,\n };\n });\n};\n\nArtistCommentary.from_post_id = function(post_id) {\n return $.get(\"/posts/\" + encodeURIComponent(post_id) + \"/artist_commentary.json\").then(function(commentary) {\n commentary.source = \"post #\" + post_id;\n return commentary;\n });\n};\n\nArtistCommentary.fill_commentary = function(commentary) {\n var description = ArtistCommentary.merge_commentaries($(\"#artist_commentary_original_description\").val().trim(), commentary);\n $(\"#artist_commentary_original_description\").val(description);\n\n // Update the other fields if they're blank. Return success if none conflict.\n return [\n ArtistCommentary.update_field($(\"#artist_commentary_original_title\"), commentary.original_title),\n ArtistCommentary.update_field($(\"#artist_commentary_translated_title\"), commentary.translated_title),\n ArtistCommentary.update_field($(\"#artist_commentary_translated_description\"), commentary.translated_description),\n ].every(function (i) { return i; });\n};\n\n// If the new description conflicts with the current description, merge them\n// by appending the new description onto the old one.\nArtistCommentary.merge_commentaries = function(description, commentary) {\n var post_source = $('.image-container').data().source;\n var normalized_source = $(\".image-container\").data().normalizedSource;\n\n if ((commentary.original_description && description) &&\n (commentary.original_description !== description)) {\n return description\n + \"\\n\\n[tn]\\nSource: \" + normalized_source + \"\\n[/tn]\"\n + \"\\n\\nh6. \" + (commentary.original_title || \"Untitled\")\n + \"\\n\\n\" + commentary.original_description\n + \"\\n\\n[tn]\\nSource: \" + commentary.source + \"\\n[/tn]\";\n } else if (commentary.source !== post_source) {\n return commentary.original_description + \"\\n\\n[tn]\\nSource: \" + commentary.source + \"\\n[/tn]\";\n } else {\n return commentary.original_description || description;\n }\n};\n\n// Update commentary field if it's blank, signal an error if there's a conflict.\nArtistCommentary.update_field = function($field, value) {\n $field.closest(\".input\").removeClass(\"field_with_errors\");\n\n if ($field.val().trim() === \"\") {\n $field.val(value);\n return true;\n } else if ($field.val().trim() !== value) {\n $field.closest(\".input\").addClass(\"field_with_errors\");\n return false;\n } else {\n return true;\n }\n}\n\n$(function() {\n ArtistCommentary.initialize_all();\n});\n\nexport default ArtistCommentary\n","let Autocomplete = {};\n\nAutocomplete.VERSION = 1; // This should be bumped whenever the /autocomplete API changes in order to invalid client caches.\nAutocomplete.MAX_RESULTS = 20;\n\nAutocomplete.initialize_all = function() {\n $.widget(\"ui.autocomplete\", $.ui.autocomplete, {\n options: {\n delay: 0,\n minLength: 1,\n autoFocus: false,\n focus: function() { return false; },\n },\n _create: function() {\n this.element.on(\"keydown.Autocomplete.tab\", null, \"tab\", Autocomplete.on_tab);\n this._super();\n },\n _renderItem: Autocomplete.render_item,\n search: function(value, event) {\n if ($(this).data(\"ui-autocomplete\")) {\n $(this).data(\"ui-autocomplete\").menu.bindings = $();\n }\n this._super(value, event);\n },\n });\n\n this.initialize_tag_autocomplete();\n this.initialize_dtext_autocomplete($(\"form div.input.dtext textarea\"));\n this.initialize_fields($('[data-autocomplete=\"tag\"]'), \"tag\");\n this.initialize_fields($('[data-autocomplete=\"artist\"]'), \"artist\");\n this.initialize_fields($('[data-autocomplete=\"pool\"]'), \"pool\");\n this.initialize_fields($('[data-autocomplete=\"user\"]'), \"user\");\n this.initialize_fields($('[data-autocomplete=\"wiki-page\"]'), \"wiki_page\");\n this.initialize_fields($('[data-autocomplete=\"favorite-group\"]'), \"favorite_group\");\n this.initialize_fields($('[data-autocomplete=\"saved-search-label\"]'), \"saved_search_label\");\n}\n\nAutocomplete.initialize_fields = function($fields, type) {\n $fields.autocomplete({\n select: function(event, ui) {\n Autocomplete.insert_completion(this, ui.item.value);\n return false;\n },\n source: async function(request, respond) {\n let results = await Autocomplete.autocomplete_source(request.term, type);\n respond(results);\n },\n });\n};\n\n// Autocomplete @-mentions and :emoji: references in DText.\nAutocomplete.initialize_dtext_autocomplete = function($fields) {\n $fields.autocomplete({\n select: function(event, ui) {\n Autocomplete.insert_completion(this, ui.item.value);\n return false;\n },\n position: {\n at: \"left top\",\n my: \"left bottom\"\n },\n source: async function(req, resp) {\n var cursor = this.element.get(0).selectionStart;\n let match = req.term.substring(0, cursor).match(/([ \\r\\n/\"\\\\()[\\]{}<>]|^)([@:])(\\S*)$/);\n\n let prefix = match?.[1];\n let type = match?.[2];\n let name = match?.[3];\n\n if (type === \"@\") {\n let results = await Autocomplete.autocomplete_source(name, \"mention\");\n resp(results);\n } else if (type === \":\") {\n let results = await Autocomplete.autocomplete_source(name, \"emoji\", { limit: 50, allowEmpty: true });\n resp(results);\n } else {\n resp([]);\n }\n }\n });\n}\n\nAutocomplete.initialize_tag_autocomplete = function() {\n var $fields_multiple = $('[data-autocomplete=\"tag-query\"], [data-autocomplete=\"tag-edit\"]');\n\n $fields_multiple.autocomplete({\n select: function(event, ui) {\n Autocomplete.insert_completion(this, ui.item.value);\n return false;\n },\n source: async function(req, resp) {\n let term = Autocomplete.current_term(this.element);\n let results = await Autocomplete.autocomplete_source(term, \"tag_query\");\n resp(results);\n }\n });\n}\n\nAutocomplete.current_term = function($input) {\n let query = $input.get(0).value;\n let caret = $input.get(0).selectionStart;\n let regexp = new RegExp(`^[-~(]*(${Autocomplete.tag_prefixes().join(\"|\")})?`);\n let match = query.substring(0, caret).match(/\\S*$/)[0].replace(regexp, \"\").toLowerCase();\n return match;\n};\n\n// Update the input field with the item currently focused in the\n// autocomplete menu, then position the caret just after the inserted completion.\nAutocomplete.insert_completion = function(input, completion) {\n // Trim all whitespace (tabs, spaces) except for line returns\n var before_caret_text = input.value.substring(0, input.selectionStart).replace(/^[ \\t]+|[ \\t]+$/gm, \"\");\n var after_caret_text = input.value.substring(input.selectionStart).replace(/^[ \\t]+|[ \\t]+$/gm, \"\");\n\n var regexp = new RegExp(`([-~(]*(?:${Autocomplete.tag_prefixes().join(\"|\")})?)\\\\S+$`, \"g\");\n before_caret_text = before_caret_text.replace(regexp, \"$1\") + completion + \" \";\n\n input.value = before_caret_text + after_caret_text;\n input.selectionStart = input.selectionEnd = before_caret_text.length;\n\n $(input).trigger(\"input\"); // Manually trigger an input event because programmatically editing the field won't trigger one.\n $(() => $(input).autocomplete(\"instance\").close()); // XXX Hack to close the autocomplete menu after the input event above retriggers it\n};\n\n// If we press tab while the autocomplete menu is open but nothing is\n// focused, complete the first item and close the menu.\nAutocomplete.on_tab = function(event) {\n var input = this;\n var autocomplete = $(input).autocomplete(\"instance\");\n var $autocomplete_menu = autocomplete.menu.element;\n\n if (!$autocomplete_menu.is(\":visible\")) {\n return;\n }\n\n if ($autocomplete_menu.has(\".ui-state-active\").length === 0) {\n var $first_item = $autocomplete_menu.find(\".ui-menu-item\").first();\n var completion = $first_item.data().uiAutocompleteItem.value;\n\n Autocomplete.insert_completion(input, completion);\n }\n\n // Prevent the tab key from moving focus to the next element.\n event.preventDefault();\n};\n\nAutocomplete.render_item = function(list, item) {\n item.html.data(\"ui-autocomplete-item\", item);\n return list.append(item.html);\n};\n\nAutocomplete.autocomplete_source = async function (query, type, { allowEmpty = false, limit = Autocomplete.MAX_RESULTS } = {}) {\n if (query === \"\" && !allowEmpty) {\n return [];\n }\n\n let html = await $.get(\"/autocomplete\", {\n \"search[query]\": query,\n \"search[type]\": type,\n \"version\": Autocomplete.VERSION,\n \"limit\": limit,\n });\n\n let items = $(html).find(\"li\").toArray().map(item => {\n let $item = $(item);\n return { value: $item.attr(\"data-autocomplete-value\"), html: $item };\n });\n\n return items;\n}\n\nAutocomplete.tag_prefixes = function() {\n return JSON.parse($(\"meta[name=autocomplete-tag-prefixes]\").attr(\"content\"));\n};\n\n$(document).ready(function() {\n Autocomplete.initialize_all();\n});\n\nexport default Autocomplete;\n","import Utility from './utility'\nimport Cookie from './cookie'\n\nlet Blacklist = {};\n\nBlacklist.entries = [];\n\nBlacklist.parse_entry = function(string) {\n var entry = {\n \"tags\": string,\n \"require\": [],\n \"exclude\": [],\n \"optional\": [],\n \"disabled\": false,\n \"hits\": 0,\n \"min_score\": null\n };\n\n let tags = Utility.splitWords(string);\n tags.forEach(function(tag) {\n if (tag.charAt(0) === '-') {\n entry.exclude.push(tag.slice(1));\n } else if (tag.charAt(0) === '~') {\n entry.optional.push(tag.slice(1));\n } else if (tag.match(/^score:<.+/)) {\n var score = tag.match(/^score:<(.+)/)[1];\n entry.min_score = parseInt(score);\n } else {\n entry.require.push(tag);\n }\n });\n return entry;\n}\n\nBlacklist.parse_entries = function() {\n var entries = (Utility.meta(\"blacklisted-tags\") || \"nozomiisthebestlovelive\").replace(/(rating:\\w)\\w+/ig, \"$1\").toLowerCase().split(/,/);\n entries = entries.filter(e => e.trim() !== \"\");\n\n entries.forEach(function(tags) {\n var entry = Blacklist.parse_entry(tags);\n Blacklist.entries.push(entry);\n });\n}\n\nBlacklist.toggle_entry = function(e) {\n var $link = $(e.target);\n var tags = $link.text();\n var match = $.grep(Blacklist.entries, function(entry, i) {\n return entry.tags === tags;\n })[0];\n if (match) {\n match.disabled = !match.disabled;\n if (match.disabled) {\n $link.addClass(\"blacklisted-inactive\");\n } else {\n $link.removeClass(\"blacklisted-inactive\");\n }\n }\n Blacklist.apply();\n e.preventDefault();\n}\n\nBlacklist.update_sidebar = function() {\n Blacklist.entries.forEach(function(entry) {\n if (entry.hits.length === 0) {\n return;\n }\n\n var item = $(\"
  • \");\n var link = $(\"\");\n var count = $(\"\");\n\n link.text(entry.tags);\n link.attr(\"href\", `/posts?tags=${encodeURIComponent(entry.tags)}`);\n link.attr(\"title\", entry.tags);\n link.on(\"click.danbooru\", Blacklist.toggle_entry);\n let unique_hits = new Set(entry.hits).size;\n count.html(unique_hits);\n count.addClass(\"count\");\n item.append(link);\n item.append(\" \");\n item.append(count);\n\n $(\"#blacklist-list\").append(item);\n });\n\n $(\"#blacklist-box\").show();\n}\n\nBlacklist.disable_all = function() {\n Blacklist.entries.forEach(function(entry) {\n entry.disabled = true;\n });\n // There is no need to process the blacklist when disabling\n Blacklist.posts().removeClass(\"blacklisted-active\");\n $(\"#disable-all-blacklists\").hide();\n $(\"#re-enable-all-blacklists\").show();\n $(\"#blacklist-list a\").addClass(\"blacklisted-inactive\");\n}\n\nBlacklist.enable_all = function() {\n Blacklist.entries.forEach(function(entry) {\n entry.disabled = false;\n });\n Blacklist.apply();\n $(\"#disable-all-blacklists\").show();\n $(\"#re-enable-all-blacklists\").hide();\n $(\"#blacklist-list a\").removeClass(\"blacklisted-inactive\");\n}\n\nBlacklist.initialize_disable_all_blacklists = function() {\n if (Cookie.get(\"dab\") === \"1\") {\n Blacklist.disable_all();\n } else {\n // The blacklist has already been processed by this point\n $(\"#disable-all-blacklists\").show()\n }\n\n $(\"#disable-all-blacklists\").on(\"click.danbooru\", function(e) {\n Cookie.put(\"dab\", \"1\");\n Blacklist.disable_all();\n e.preventDefault();\n });\n\n $(\"#re-enable-all-blacklists\").on(\"click.danbooru\", function(e) {\n Cookie.put(\"dab\", \"0\");\n Blacklist.enable_all();\n e.preventDefault();\n });\n}\n\nBlacklist.apply = function() {\n Blacklist.entries.forEach(function(entry) {\n entry.hits = [];\n });\n\n var count = 0\n\n Blacklist.posts().each(function(i, post) {\n count += Blacklist.apply_post(post);\n });\n\n return count;\n}\n\nBlacklist.apply_post = function(post) {\n var post_count = 0;\n Blacklist.entries.forEach(function(entry) {\n if (Blacklist.post_match(post, entry)) {\n let post_id = $(post).data('id');\n entry.hits.push(post_id);\n post_count += 1;\n }\n });\n if (post_count > 0) {\n Blacklist.post_hide(post);\n } else {\n Blacklist.post_unhide(post);\n }\n return post_count;\n};\n\nBlacklist.posts = function() {\n return $(\".post-preview, .image-container, #c-comments .post, .mod-queue-preview.post-preview\");\n}\n\nBlacklist.post_match = function(post, entry) {\n if (entry.disabled) {\n return false;\n }\n\n var $post = $(post);\n var score = parseInt($post.attr(\"data-score\"));\n var score_test = entry.min_score === null || score < entry.min_score;\n\n var tags = Utility.splitWords($post.attr(\"data-tags\"));\n tags.push(...Utility.splitWords($post.attr(\"data-pools\")));\n tags.push(\"rating:\" + $post.data(\"rating\"));\n tags.push(\"uploaderid:\" + $post.attr(\"data-uploader-id\"));\n Utility.splitWords($post.data(\"flags\")).forEach(function(v) {\n tags.push(\"status:\" + v);\n });\n\n return (Utility.is_subset(tags, entry.require) && score_test)\n && (!entry.optional.length || Utility.intersect(tags, entry.optional).length)\n && !Utility.intersect(tags, entry.exclude).length;\n}\n\nBlacklist.post_hide = function(post) {\n var $post = $(post);\n $post.addClass(\"blacklisted blacklisted-active\");\n\n var $video = $post.find(\"video\").get(0);\n if ($video) {\n $video.pause();\n $video.currentTime = 0;\n }\n}\n\nBlacklist.post_unhide = function(post) {\n var $post = $(post);\n $post.addClass(\"blacklisted\").removeClass(\"blacklisted-active\");\n\n var $video = $post.find(\"video\").get(0);\n if ($video) {\n $video.play();\n }\n}\n\nBlacklist.initialize_all = function() {\n Blacklist.parse_entries();\n\n if (Blacklist.apply() > 0) {\n Blacklist.update_sidebar();\n Blacklist.initialize_disable_all_blacklists();\n }\n}\n\n$(document).ready(function() {\n if ($(\"#blacklist-box\").length === 0) {\n return;\n }\n\n Blacklist.initialize_all();\n});\n\nexport default Blacklist\n","import Utility from \"./utility\";\n\nclass CommentComponent {\n static initialize() {\n if ($(\"#c-posts #a-show, #c-comments\").length) {\n $(document).on(\"click.danbooru.comment\", \".expand-comment-response\", CommentComponent.showNewCommentForm);\n $(document).on(\"click.danbooru.comment\", \".comment-copy-id\", CommentComponent.copyID);\n $(document).on(\"click.danbooru.comment\", \".comment-copy-link\", CommentComponent.copyLink);\n }\n }\n\n static showNewCommentForm(e) {\n $(e.target).hide();\n var $form = $(e.target).closest(\"div.new-comment\").find(\"form\");\n $form.show();\n $form[0].scrollIntoView(false);\n $form.find(\"textarea\").selectEnd();\n e.preventDefault();\n }\n\n static async copyID(e) {\n let id = $(this).closest(\".comment\").data(\"id\");\n let link = `comment #${id}`;\n Utility.copyToClipboard(link);\n e.preventDefault();\n }\n\n static async copyLink(e) {\n let id = $(this).closest(\".comment\").data(\"id\");\n let link = `${window.location.origin}/comments/${id}`;\n Utility.copyToClipboard(link);\n e.preventDefault();\n }\n}\n\n$(document).ready(CommentComponent.initialize);\n\nexport default CommentComponent;\n","import Utility from \"./utility\";\nimport { createTooltip } from \"./utility\";\nimport { hideAll } from 'tippy.js';\n\nclass CommentVotesTooltipComponent {\n // Trigger on the comment score link; see CommentComponent.\n static TARGET_SELECTOR = \"span.comment-score\";\n static SHOW_DELAY = 125;\n static HIDE_DELAY = 125;\n static DURATION = 250;\n static instance = null;\n\n static initialize() {\n if ($(CommentVotesTooltipComponent.TARGET_SELECTOR).length === 0) {\n return;\n }\n\n CommentVotesTooltipComponent.instance = createTooltip(\"comment-tooltip\", {\n delay: [CommentVotesTooltipComponent.SHOW_DELAY, CommentVotesTooltipComponent.HIDE_DELAY],\n duration: CommentVotesTooltipComponent.DURATION,\n target: CommentVotesTooltipComponent.TARGET_SELECTOR,\n\n onShow: CommentVotesTooltipComponent.onShow,\n onHide: CommentVotesTooltipComponent.onHide,\n });\n }\n\n static async onShow(instance) {\n let $target = $(instance.reference);\n let $tooltip = $(instance.popper);\n let commentId = $target.parents(\"[data-id]\").data(\"id\");\n\n hideAll({ exclude: instance });\n\n try {\n $tooltip.addClass(\"tooltip-loading\");\n\n instance._request = $.get(`/comments/${commentId}/votes`, { variant: \"tooltip\" });\n let html = await instance._request;\n instance.setContent(html);\n\n $tooltip.removeClass(\"tooltip-loading\");\n } catch (error) {\n if (error.status !== 0 && error.statusText !== \"abort\") {\n Utility.error(`Error displaying votes for comment #${commentId} (error: ${error.status} ${error.statusText})`);\n }\n }\n }\n\n static async onHide(instance) {\n if (instance._request?.state() === \"pending\") {\n instance._request.abort();\n }\n }\n}\n\n$(document).ready(CommentVotesTooltipComponent.initialize);\n\nexport default CommentVotesTooltipComponent;\n","import Cookie from './cookie'\n\n$(function() {\n $(\"#hide-upgrade-account-notice\").on(\"click.danbooru\", function(e) {\n $(\"#upgrade-account-notice\").hide();\n Cookie.put('hide_upgrade_account_notice', '1', 7 * 24 * 60 * 60);\n e.preventDefault();\n });\n\n $(\"#hide-promotion-notice\").on(\"click.danbooru\", function(e) {\n $(\"#promotion-notice\").hide();\n Cookie.put(\"hide_winter_sale_notice\", \"1\", 1 * 60 * 60);\n Cookie.put(\"hide_upgrade_account_notice\", \"1\", 7 * 24 * 60 * 60);\n e.preventDefault();\n });\n\n $(\"#hide-dmail-notice\").on(\"click.danbooru\", function(e) {\n var $dmail_notice = $(\"#dmail-notice\");\n $dmail_notice.hide();\n var dmail_id = $dmail_notice.data(\"id\");\n Cookie.put(\"hide_dmail_notice\", dmail_id);\n e.preventDefault();\n });\n\n $(\"#hide-verify-account-notice\").on(\"click.danbooru\", function(e) {\n $(\"#verify-account-notice\").hide();\n Cookie.put('hide_verify_account_notice', '1', 3 * 24 * 60 * 60);\n e.preventDefault();\n });\n\n $(\"#close-notice-link\").on(\"click.danbooru\", function(e) {\n $('#notice').fadeOut(\"fast\");\n e.preventDefault();\n });\n\n if (location.hostname.endsWith(\"danbooru.me\")) {\n location.hostname = \"danbooru.donmai.us\";\n }\n});\n","let Cookie = {};\n\nCookie.put = function(name, value, max_age_in_seconds = 60 * 60 * 24 * 365 * 20) {\n let cookie = `${name}=${encodeURIComponent(value)}; Path=/; SameSite=Lax;`;\n\n if (max_age_in_seconds) {\n cookie += ` Max-Age=${max_age_in_seconds};`\n }\n\n if (location.protocol === \"https:\") {\n cookie += \" Secure;\";\n }\n\n document.cookie = cookie;\n}\n\nCookie.get = function(name) {\n var nameEq = name + \"=\";\n var ca = document.cookie.split(\";\");\n\n for (var i = 0; i < ca.length; ++i) {\n var c = ca[i];\n\n while (c.charAt(0) === \" \") {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEq) === 0) {\n return this.unescape(c.substring(nameEq.length, c.length));\n }\n }\n\n return null;\n}\n\nCookie.remove = function(name) {\n this.put(name, \"\", -1);\n}\n\nCookie.unescape = function(val) {\n return decodeURIComponent(val.replace(/\\+/g, \" \"));\n}\n\nCookie.getItem = Cookie.get;\nCookie.setItem = Cookie.put;\n\nCookie.initialize = function() {\n if (this.get(\"hide-upgrade-account\") !== \"1\") {\n $(\"#upgrade-account\").show();\n }\n}\n\n$(function() {\n Cookie.initialize();\n});\n\nexport default Cookie\n","let CurrentUser = {};\n\nCurrentUser.data = function(key) {\n return $(\"body\").data(`current-user-${key}`);\n};\n\nCurrentUser.update = function(settings) {\n return $.ajax(`/users/${CurrentUser.data(\"id\")}.json`, {\n method: \"PUT\",\n data: { user: settings }\n });\n};\n\nCurrentUser.darkMode = function() {\n let theme = CurrentUser.data(\"theme\");\n\n return theme === \"dark\" || (theme === \"auto\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches);\n};\n\nexport default CurrentUser;\n","import { find as lodashFind, memoize } from \"lodash\";\n\n// Collects information about the user's browser and computer. Used for detecting bots and ban evaders.\nexport default class Device {\n static canvas = document.createElement(\"canvas\");\n static commonFrameRates = [60, 75, 90, 120, 144, 240, 360];\n\n static async metadata() {\n try {\n if (\"speechSynthesis\" in window) {\n window.speechSynthesis.onvoiceschanged = () => {}; // Somehow forces Chrome to initialize the getVoices() list.\n }\n\n return {\n hardware: {\n hardwareConcurrency: window.navigator?.hardwareConcurrency,\n deviceMemory: window.navigator?.deviceMemory,\n webglUnmaskedRenderer: this.webgl?.getParameter?.(this.webgl?.getExtension?.(\"WEBGL_debug_renderer_info\")?.UNMASKED_RENDERER_WEBGL),\n webglUnmaskedVendor: this.webgl?.getParameter?.(this.webgl?.getExtension?.(\"WEBGL_debug_renderer_info\")?.UNMASKED_VENDOR_WEBGL),\n maxTouchPoints: window.navigator?.maxTouchPoints,\n batteryLevel: await window.navigator?.getBattery?.()?.level,\n batteryCharging: await window.navigator?.getBattery?.()?.charging,\n mobile: window.navigator?.userAgentData?.mobile,\n platform: window.navigator?.userAgentData?.platform,\n platformVersion: (await this.userAgentData())?.platformVersion,\n architecture: (await this.userAgentData())?.architecture,\n bitness: (await this.userAgentData())?.bitness,\n mathFingerprint: await this.mathFingerprint(),\n },\n connection: {\n httpVersion: window.performance?.getEntriesByType?.('navigation')?.[0]?.nextHopProtocol,\n downlink: window.navigator?.connection?.downlink,\n effectiveType: window.navigator?.connection?.effectiveType,\n rtt: window.navigator?.connection?.rtt,\n saveData: window.navigator?.connection?.saveData,\n },\n user: {\n locale: Intl?.DateTimeFormat?.()?.resolvedOptions?.().locale,\n timeZone: Intl?.DateTimeFormat?.()?.resolvedOptions?.().timeZone,\n timeZoneOffset: new Date().getTimezoneOffset(),\n languages: window.navigator?.languages?.join(\"; \"),\n darkMode: window.matchMedia?.(\"(prefers-color-scheme: dark)\")?.matches,\n },\n window: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n screen: {\n width: window.screen?.width,\n height: window.screen?.height,\n frameRate: await this.frameRate(),\n orientation: window.screen?.orientation?.type,\n pixelDepth: window.screen?.pixelDepth,\n pixelRatio: window.devicePixelRatio,\n colorGamut: this.colorGamut(),\n },\n page: {\n domNodes: $('*').length,\n historyLength: window.history?.length,\n navigationLength: window.navigation?.currentEntry?.index,\n openDuration: (window.performance?.now?.() ?? 0) / 1000,\n },\n browser: {\n userAgent: window.navigator?.userAgent,\n userAgentFullVersion: (await this.userAgentData())?.uaFullVersion,\n //hasWindowScheduler: \"scheduler\" in window,\n //hasWindowNavigation: \"navigation\" in window,\n //hasEventCounts: \"eventCounts\" in (window.performance ?? {}),\n //hasNavigatorConnection: \"connection\" in (window.navigator ?? {}),\n //hasNavigatorUSB: \"usb\" in (window.navigator ?? {}),\n //hasNavigatorHID: \"hid\" in (window.navigator ?? {}),\n //hasNavigatorShare: \"share\" in (window.navigator ?? {}),\n speechSynthesisFingerprint: await this.speechSynthesisFingerprint(),\n webdriver: window.navigator?.webdriver,\n },\n };\n } catch (error) {\n // Swallow errors to prevent breaking pages in case we do something unsupported by uncommon browsers.\n return {};\n }\n }\n\n static async flatMetadata() {\n let objects = Object.entries(await this.metadata()).map(([category, values]) => {\n return Object.entries(values).map(([name, value]) => {\n return ({ [`${category}.${name}`]: value });\n });\n }).flat();\n\n return Object.assign(...objects);\n }\n\n static async jsonMetadata() {\n return JSON.stringify(await this.metadata(), (key, value) => value ?? null); // convert undefined to null.\n }\n\n // Estimate the screen's frame rate. Calculates the frame rate N times and takes the median value, then rounds it to\n // the nearest standard frame rate.\n static async frameRate(samples = 5) {\n let frameTimes = [];\n for (let i = 0; i < samples; i++) {\n frameTimes[i] = await this.frameTime();\n }\n\n let medianTime = frameTimes.sort()[Math.floor(samples / 2)];\n let frameRate = Math.round(1000 / medianTime);\n let closestFrameRate = lodashFind(this.commonFrameRates, rate => Math.abs(frameRate - rate) <= 0.1 * rate);\n return closestFrameRate ?? frameRate;\n }\n\n // Calculate the time in milliseconds between two animation frames. Used to estimate the screen's frame rate. May\n // be slightly off due to timing fluctuations.\n static async frameTime() {\n return new Promise(resolve => {\n requestAnimationFrame(t1 => {\n requestAnimationFrame(t2 => {\n resolve(t2 - t1);\n })\n })\n });\n }\n\n static async userAgentData() {\n return await window.navigator.userAgentData?.getHighEntropyValues?.([\n \"architecture\", \"bitness\", \"formFactor\", \"fullVersionList\", \"model\", \"platformVersion\", \"uaFullVersion\", \"wow64\"\n ]);\n }\n\n static colorGamut() {\n let gamuts = [\"rec2020\", \"p3\", \"srgb\"];\n return lodashFind(gamuts, gamut => window.matchMedia?.(`(color-gamut: ${gamut})`)?.matches);\n }\n\n // Detect floating point rounding differences between browsers.\n static async mathFingerprint() {\n let log = Math.log;\n let exp = Math.exp;\n let sqrt = Math.sqrt;\n let acoshPf = x => log(x + sqrt(x * x - 1))\n let asinhPf = x => log(x + sqrt(x * x + 1))\n let atanhPf = x => log((1 + x) / (1 - x)) / 2\n let sinhPf = x => exp(x) - 1 / exp(x) / 2\n let coshPf = x => (exp(x) + 1 / exp(x)) / 2\n let expm1Pf = x => exp(x) - 1\n let tanhPf = x => (exp(2 * x) - 1) / (exp(2 * x) + 1)\n let log1pPf = x => log(1 + x)\n\n let fingerprint = {\n acos: Math.acos(0.123124234234234242),\n acosh: Math.acosh(1e308),\n acoshPf: acoshPf(1e154),\n asin: Math.asin(0.123124234234234242),\n asinh: Math.asinh(1),\n asinhPf: asinhPf(1),\n atanh: Math.atanh(0.5),\n atanhPf: atanhPf(0.5),\n atan: Math.atan(0.5),\n sin: Math.sin(-1e300),\n sinh: Math.sinh(1),\n sinhPf: sinhPf(1),\n cos: Math.cos(10.000000000123),\n cosh: Math.cosh(1),\n coshPf: coshPf(1),\n tan: Math.tan(-1e300),\n tanh: Math.tanh(1),\n tanhPf: tanhPf(1),\n exp: Math.exp(1),\n expm1: Math.expm1(1),\n expm1Pf: expm1Pf(1),\n log1p: Math.log1p(10),\n log1pPf: log1pPf(10),\n powPI: Math.pow(Math.PI, -100),\n }\n\n let hash = await this.hash(JSON.stringify(fingerprint));\n return `v1:${hash}`;\n }\n\n static async speechSynthesisFingerprint(data) {\n if (! (\"speechSynthesis\" in window)) {\n return undefined;\n }\n\n let voices = window.speechSynthesis.getVoices().map(voice => voice.voiceURI);\n let hash = await this.hash(JSON.stringify(voices));\n return `v1:${hash}`;\n }\n\n // Generate a hash of the data. The hash function is SHA-512, truncated to first 32 hex characters.\n static async hash(data) {\n if (! (\"subtle\" in window.crypto)) {\n return undefined;\n }\n\n let input = new TextEncoder().encode(data);\n let hash = await window.crypto.subtle.digest(\"SHA-512\", input);\n let bytes = new Uint8Array(hash);\n\t let hex = Array.from(bytes).map(byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\n\t return hex.slice(0, 32);\n }\n\n static get webgl() {\n return this.canvas?.getContext?.(\"webgl\");\n }\n}\n\nDevice.frameRate = memoize(Device.frameRate);\nDevice.userAgentData = memoize(Device.userAgentData);\n","export default class Draggable {\n constructor(selector) {\n this.selector = selector;\n this.initialize();\n }\n\n initialize() {\n $(document).on(\"pointerdown.danbooru\", this.selector, (startEvent) => {\n if (startEvent.button !== 0 || !startEvent.originalEvent.isPrimary) {\n return; // Ignore right-clicks and multi-touch gestures.\n }\n\n let active = true;\n let target = startEvent.target;\n let pointerId = startEvent.pointerId;\n let namespace = `drag-${pointerId}`;\n\n target.setPointerCapture(pointerId);\n $(target).addClass(\"dragging\");\n $(target).trigger(\"drag:start\", [startEvent, this]);\n startEvent.preventDefault();\n\n $(document.body).on(`pointermove.${namespace}`, (moveEvent) => {\n requestAnimationFrame(() => {\n if (moveEvent.pointerId !== pointerId || !active) {\n return; // Ignore multi-touch gestures and pointermove events after pointerup has already been fired.\n }\n\n let movement = {\n x: moveEvent.clientX - startEvent.clientX,\n y: moveEvent.clientY - startEvent.clientY,\n };\n\n $(target).trigger(\"drag:move\", [moveEvent, movement, this]);\n moveEvent.preventDefault();\n });\n });\n\n $(document.body).on(`pointerup.${namespace} pointercancel.${namespace}`, (endEvent) => {\n if (endEvent.pointerId !== pointerId) {\n return; // Ignore multi-touch gestures.\n }\n\n active = false;\n $(target).removeClass(\"dragging\");\n $(document.body).off(`pointerup.${namespace} pointercancel.${namespace} pointermove.${namespace}`);\n\n $(target).trigger(\"drag:stop\", [endEvent, this]);\n endEvent.preventDefault();\n });\n });\n }\n}\n","let Dtext = {};\n\nDtext.initialize_all = function() {\n Dtext.initialize_links();\n}\n\nDtext.initialize_links = function() {\n $(document).on(\"click.danbooru\", \".dtext-preview-button\", Dtext.click_button);\n}\n\nDtext.call_preview = async function(e, $button, $input, $preview, mediaEmbeds) {\n $button.val(\"Edit\");\n $input.hide();\n $preview.text(\"Loading...\").fadeIn(\"fast\");\n\n let inline = $input.is(\"input\");\n let html = await $.post(\"/dtext_preview\", { body: $input.val(), inline: inline, media_embeds: mediaEmbeds });\n $preview.html(html).fadeIn(\"fast\");\n}\n\nDtext.call_edit = function(e, $button, $input, $preview) {\n $button.val(\"Preview\");\n $preview.hide();\n $input.slideDown(\"fast\");\n}\n\nDtext.click_button = function(e) {\n var $button = $(e.target);\n var $form = $button.parents(\"form\");\n var fieldName = $button.data(\"preview-field\");\n var mediaEmbeds = $button.data(\"media-embeds\");\n var $inputContainer = $form.find(`div.input.${fieldName} .dtext-previewable`);\n var $input = $inputContainer.find(\"> input, > textarea\");\n var $preview = $inputContainer.find(\"div.dtext-preview\");\n\n if ($button.val().match(/preview/i)) {\n Dtext.call_preview(e, $button, $input, $preview, mediaEmbeds);\n } else {\n Dtext.call_edit(e, $button, $input, $preview);\n }\n\n e.preventDefault();\n}\n\n$(document).ready(function() {\n Dtext.initialize_all();\n});\n\nexport default Dtext\n","import Rails from \"@rails/ujs\";\n\nlet FavoriteGroup = {};\n\nFavoriteGroup.initialize_all = function() {\n if ($(\"#c-posts\").length && $(\"#a-show\").length) {\n this.initialize_add_to_favgroup_dialog();\n }\n}\n\nFavoriteGroup.initialize_add_to_favgroup_dialog = function() {\n $(\"#add-to-favgroup-dialog\").dialog({\n autoOpen: false,\n width: 700,\n buttons: {\n \"Cancel\": function() {\n $(this).dialog(\"close\");\n }\n }\n });\n\n $(\"#open-favgroup-dialog-link\").on(\"click.danbooru\", FavoriteGroup.open_favgroup_dialog);\n}\n\nFavoriteGroup.open_favgroup_dialog = function(e) {\n if ($(\".add-to-favgroup\").length === 1) {\n // If the user only has one favorite group we don't need to ask which group to add the post to.\n let favgroup = $(\".add-to-favgroup\").get(0);\n Rails.fire(favgroup, \"click\");\n } else {\n $(\"#add-to-favgroup-dialog\").dialog(\"open\");\n }\n e.preventDefault();\n}\n\n$(function() {\n FavoriteGroup.initialize_all();\n});\n\nexport default FavoriteGroup\n","import Utility from \"./utility\";\nimport { createTooltip } from \"./utility\";\nimport { hideAll } from 'tippy.js';\n\nclass FavoritesTooltipComponent {\n // Trigger on the post favcount link.\n static TARGET_SELECTOR = \"span.post-favcount a\";\n static SHOW_DELAY = 125;\n static HIDE_DELAY = 125;\n static DURATION = 250;\n static instance = null;\n\n static initialize() {\n if ($(FavoritesTooltipComponent.TARGET_SELECTOR).length === 0) {\n return;\n }\n\n FavoritesTooltipComponent.instance = createTooltip(\"favorites-tooltip\", {\n delay: [FavoritesTooltipComponent.SHOW_DELAY, FavoritesTooltipComponent.HIDE_DELAY],\n duration: FavoritesTooltipComponent.DURATION,\n target: FavoritesTooltipComponent.TARGET_SELECTOR,\n\n onShow: FavoritesTooltipComponent.onShow,\n onHide: FavoritesTooltipComponent.onHide,\n });\n }\n\n static async onShow(instance) {\n let $target = $(instance.reference);\n let $tooltip = $(instance.popper);\n let postId = $target.parents(\"[data-id]\").data(\"id\");\n\n hideAll({ exclude: instance });\n\n try {\n $tooltip.addClass(\"tooltip-loading\");\n\n instance._request = $.get(`/posts/${postId}/favorites?variant=tooltip`);\n let html = await instance._request;\n instance.setContent(html);\n\n $tooltip.removeClass(\"tooltip-loading\");\n } catch (error) {\n if (error.status !== 0 && error.statusText !== \"abort\") {\n Utility.error(`Error displaying favorites for post #${postId} (error: ${error.status} ${error.statusText})`);\n }\n }\n }\n\n static async onHide(instance) {\n if (instance._request?.state() === \"pending\") {\n instance._request.abort();\n }\n }\n}\n\n$(document).ready(FavoritesTooltipComponent.initialize);\n\nexport default FavoritesTooltipComponent;\n","import Dropzone from 'dropzone';\nimport Utility from \"./utility\";\nimport capitalize from \"lodash/capitalize\";\n\nexport default class FileUploadComponent {\n static POLL_DELAY = 250;\n\n static initialize() {\n $(\".file-upload-component\").toArray().forEach(element => {\n new FileUploadComponent($(element));\n });\n }\n\n constructor($component) {\n this.$component = $component;\n this.$component.on(\"ajax:success\", e => this.onSubmit(e));\n this.$component.on(\"ajax:error\", e => this.onError(e));\n this.$dropTarget.on(\"paste.danbooru\", e => this.onPaste(e));\n this.dropzone = this.initializeDropzone();\n\n // If the source field is pre-filled, then immediately submit the upload.\n if (/^https?:\\/\\//.test(this.$sourceField.val())) {\n this.$component.find(\"input[type='submit']\").click();\n }\n }\n\n initializeDropzone() {\n if (!window.FileReader) {\n this.$dropzone.addClass(\"hidden\");\n this.$component.find(\"input[type='file']\").removeClass(\"hidden\");\n return null;\n }\n\n let dropzone = new Dropzone(this.$dropTarget.get(0), {\n url: \"/uploads.json\",\n paramName: \"upload[files]\",\n clickable: this.$dropzone.get(0),\n previewsContainer: this.$dropzone.get(0),\n thumbnailHeight: null,\n thumbnailWidth: null,\n addRemoveLinks: false,\n parallelUploads: this.maxFiles,\n maxFiles: this.maxFiles,\n maxFilesize: this.maxFileSize,\n maxThumbnailFilesize: this.maxFileSize,\n timeout: 0,\n uploadMultiple: true,\n createImageThumbnails: false,\n acceptedFiles: \".jpg,.jpeg,.png,.gif,.webp,.avif,.mp4,.webm,.zip,.rar,.7z\",\n previewTemplate: this.$component.find(\".dropzone-preview-template\").html(),\n });\n\n dropzone.on(\"complete\", file => {\n this.$dropzone.find(\".dz-progress\").hide();\n });\n\n dropzone.on(\"addedfile\", file => {\n this.$dropzone.removeClass(\"error\");\n this.$dropzone.find(\".dropzone-hint\").hide();\n });\n\n dropzone.on(\"success\", file => {\n this.$dropzone.addClass(\"success\");\n let upload = JSON.parse(file.xhr.response)\n this.pollStatus(upload);\n });\n\n dropzone.on(\"error\", (file, msg) => {\n this.$dropzone.find(\".dropzone-hint\").show();\n dropzone.removeFile(file);\n Utility.error(msg);\n });\n\n return dropzone;\n }\n\n onPaste(e) {\n let url = e.originalEvent.clipboardData.getData(\"text\");\n this.$component.find(\"input[name='upload[source]']:not([disabled])\").val(url);\n\n if (/^https?:\\/\\//.test(url)) {\n this.$component.find(\"input[type='submit']:not([disabled])\").click();\n }\n\n e.preventDefault();\n }\n\n onSubmit(e) {\n let upload = e.originalEvent.detail[0];\n this.pollStatus(upload);\n }\n\n loadingStart() {\n this.$component.find(\".spinner-icon\").removeClass(\"hidden\");\n this.$component.find(\"input\").attr(\"disabled\", \"disabled\");\n this.$component.find(\"form\").addClass(\"pointer-events-none cursor-wait opacity-50\");\n }\n\n loadingStop() {\n this.$component.find(\".spinner-icon\").addClass(\"hidden\");\n this.$component.find(\"input\").removeAttr(\"disabled\");\n this.$component.find(\"form\").removeClass(\"pointer-events-none cursor-wait opacity-50\");\n }\n\n // Called after the upload is submitted via AJAX. Polls the upload until it\n // is complete, then redirects to the upload page.\n async pollStatus(upload) {\n this.loadingStart();\n\n while (upload.media_asset_count <= 1 && upload.status !== \"completed\" && upload.status !== \"error\") {\n await Utility.delay(FileUploadComponent.POLL_DELAY);\n upload = await $.get(`/uploads/${upload.id}.json`);\n }\n\n if (upload.status === \"error\") {\n this.$dropzone.removeClass(\"success\");\n this.loadingStop();\n\n Utility.error(`Upload failed: ${upload.error}.`);\n } else {\n let params = new URLSearchParams(window.location.search);\n let isBookmarklet = params.has(\"url\");\n params.delete(\"url\");\n params.delete(\"ref\");\n\n let url = new URL(`/uploads/${upload.id}`, window.location.origin);\n url.search = params.toString();\n\n if (isBookmarklet) {\n window.location.replace(url);\n } else {\n window.location.assign(url);\n }\n }\n }\n\n // Called when creating the upload failed because of a validation error (normally, because the source URL was not a real URL).\n async onError(e) {\n let errors = e.originalEvent.detail[0].errors;\n let message = Object.keys(errors).map(attribute => {\n return errors[attribute].map(error => {\n if (attribute === \"base\") {\n return `${error}`;\n } else {\n return `${capitalize(attribute)} ${error}`;\n }\n });\n }).join(\"; \");\n\n Utility.error(message);\n }\n\n get $dropzone() {\n return this.$component.find(\".dropzone-container\");\n }\n\n get $sourceField() {\n return this.$component.find(\"input[name='upload[source]']\");\n }\n\n get maxFileSize() {\n return Number(this.$component.attr(\"data-max-file-size\")) / (1024 * 1024);\n }\n\n get maxFiles() {\n return Number(this.$component.attr(\"data-max-files-per-upload\"));\n }\n\n // The element to listen for drag and drop events and paste events. By default,\n // it's the `.file-upload-component` element. If `data-drop-target` is the `body`\n // element, then you can drop images or paste URLs anywhere on the page.\n get $dropTarget() {\n return $(this.$component.attr(\"data-drop-target\") || this.$component);\n }\n}\n\n$(FileUploadComponent.initialize);\n","import every from \"lodash/every\";\n\n// Enforce client-side validation on forms. This makes it so that forms with the `data-validate-form` attribute can't be\n// submitted until all form fields are valid.\n//\n// This relies on HTML5 validation attributes (e.g. `required`, `minlength`, `maxlength`, `pattern`, etc) to specify the\n// requirements for each field.\n//\n// https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation\nexport default class FormValidator {\n static initialize() {\n $(\"form[data-validate-form]\").toArray().forEach(element => {\n new FormValidator(element);\n });\n }\n\n constructor(form) {\n this.$form = $(form);\n this.$form.on(\"input.danbooru paste.danbooru\", e => this.onInput(e));\n this.$form.on(\"submit.danbooru\", e => this.onSubmit(e));\n this.onInput();\n }\n\n // Return true if all form fields are valid, or false if any fields are invalid.\n valid() {\n // XXX If the form has a captcha, don't allow submitting the form until the captcha has been completed.\n if (this.$form.find(\"div.cf-turnstile\").length && !this.$form.find('input[name=\"cf-turnstile-response\"]').val()) {\n return false;\n } else {\n return every(this.$form.find(\"input\").toArray(), input => input.validity.valid);\n }\n }\n\n // Disable the submit button until all fields are valid.\n onInput() {\n this.$form.find('input[type=\"submit\"]').prop('disabled', !this.valid());\n }\n\n // Disable submitting the form with the enter key until the form is valid.\n onSubmit(event) {\n if (!this.valid()) {\n event.preventDefault();\n }\n }\n}\n\n// XXX: Trigger form validation when a captcha is completed. See `captcha_tag` in app/logical/captcha_service.rb.\nwindow.onCaptchaComplete = function() {\n $(\"form[data-validate-form]\").trigger(\"input\");\n}\n\n$(FormValidator.initialize);\n","import Utility from \"./utility\";\n\nclass ForumPostComponent {\n static initialize() {\n if ($(\"#c-forum-topics #a-show, #c-forum-posts #a-show\").length) {\n $(document).on(\"click.danbooru.forum_post\", \".edit_forum_post_link\", ForumPostComponent.showEditPostForm);\n $(document).on(\"click.danbooru.forum_post\", \".edit_forum_topic_link\", ForumPostComponent.showEditTopicForm);\n $(document).on(\"click.danbooru.forum_post\", \"#new-response-link\", ForumPostComponent.showNewForumPostForm);\n $(document).on(\"click.danbooru.forum_post\", \".forum-post-copy-id\", ForumPostComponent.copyID);\n $(document).on(\"click.danbooru.forum_post\", \".forum-post-copy-link\", ForumPostComponent.copyLink);\n }\n }\n\n static showNewForumPostForm(e) {\n $(\"#topic-response\").show();\n $(\"#forum_post_body\").get(0).scrollIntoView(false);\n $(\"#forum_post_body\").selectEnd();\n e.preventDefault();\n }\n\n static showEditPostForm(e) {\n $(this).closest(\".forum-post\").find(\".edit_forum_post\").show();\n e.preventDefault();\n }\n\n static showEditTopicForm(e) {\n $(this).closest(\".forum-post\").find(\".edit_forum_topic\").show();\n e.preventDefault();\n }\n\n static async copyID(e) {\n let id = $(this).closest(\".forum-post\").data(\"id\");\n let link = `forum #${id}`;\n Utility.copyToClipboard(link);\n e.preventDefault();\n }\n\n static async copyLink(e) {\n let id = $(this).closest(\".forum-post\").data(\"id\");\n let link = `${window.location.origin}/forum_posts/${id}`;\n Utility.copyToClipboard(link);\n e.preventDefault();\n }\n}\n\n$(document).ready(ForumPostComponent.initialize);\n\nexport default ForumPostComponent;\n","import { createTooltip } from './utility';\n\nclass HelpTooltipComponent {\n static initialize() {\n createTooltip(\"help-tooltip\", {\n target: \"a.help-tooltip-link\",\n trigger: \"click\",\n touch: \"hold\",\n duration: 50,\n content(element) {\n let $content = $(element).next(\".help-tooltip-content\");\n $content.show();\n return $content.get(0);\n }\n });\n }\n}\n\n$(document).ready(HelpTooltipComponent.initialize);\n\nexport default HelpTooltipComponent;\n","let IqdbQuery = {};\n\nIqdbQuery.initialize_all = function() {\n $(document).on(\"click.danbooru\", \"a.toggle-iqdb-posts-low-similarity\", function(event) {\n $(\".iqdb-low-similarity\").toggleClass(\"hidden\");\n $(\"a.toggle-iqdb-posts-low-similarity\").toggle();\n event.preventDefault();\n });\n};\n\n$(document).ready(IqdbQuery.initialize_all);\n","import clamp from \"lodash/clamp\";\n\nexport default class MediaAssetComponent {\n static initialize() {\n $(\".media-asset-component\").toArray().forEach(element => {\n new MediaAssetComponent(element);\n });\n }\n\n constructor(element) {\n this.$component = $(element);\n this.$container = this.$component.find(\".media-asset-container\");\n this.$image = this.$component.find(\".media-asset-image\");\n this.$zoomLevel = this.$component.find(\".media-asset-zoom-level\");\n this.scrollOnZoom = this.$component.attr(\"data-scroll-on-zoom\") === \"true\";\n this.dynamicHeight = this.$component.attr(\"data-dynamic-height\") === \"true\";\n\n this.updateHeight();\n $(window).on(\"load.danbooru\", e => this.updateHeight());\n $(window).on(\"scroll.danbooru\", e => this.updateHeight());\n\n if (this.$image.length) {\n this.$image.on(\"click.danbooru\", e => this.toggleFit(e));\n this.$image.on(\"load.danbooru\", e => this.updateZoom());\n new ResizeObserver(() => this.updateZoom()).observe(this.$image.get(0));\n this.updateZoom();\n }\n }\n\n toggleFit(e) {\n let rect = this.$image.get(0).getBoundingClientRect();\n let yRatio = (e.clientY - rect.top) / this.$image.height();\n let gap = this.$component.height() - this.$image.height();\n\n if (this.canZoomOut) {\n this.$component.addClass(\"media-asset-component-fit-height media-asset-component-fit-width\");\n } else if (this.canZoomHeight) {\n this.$component.removeClass(\"media-asset-component-fit-height\");\n }\n\n let top = this.$component.offset().top;\n let height = this.$image.height();\n let ypos = clamp(top + (yRatio * height) - (window.innerHeight / 2), Math.min(window.scrollY, top), top + height + gap - window.innerHeight);\n\n if (this.scrollOnZoom) {\n window.scrollTo({ top: ypos });\n }\n\n this.updateZoom();\n }\n\n updateZoom() {\n this.$image.removeClass(\"cursor-zoom-in cursor-zoom-out\");\n this.$zoomLevel.removeClass(\"hidden\").text(`${Math.round(100 * this.zoomLevel)}%`);\n\n if (this.canZoomIn) {\n this.$image.addClass(\"cursor-zoom-in\");\n } else if (this.canZoomOut) {\n this.$image.addClass(\"cursor-zoom-out\");\n }\n }\n\n updateHeight() {\n this.$component.css(\"--header-initial-height\", Math.max(0, this.$component.parent().offset().top) + \"px\");\n this.$component.css(\"--header-visible-height\", Math.max(0, this.$component.parent().offset().top - $(window).scrollTop()) + \"px\");\n this.$component.attr(\"data-dynamic-height-initialized\", \"true\");\n }\n\n get zoomLevel() {\n return this.$image.width() / Number(this.$image.attr(\"width\"));\n }\n\n get canZoomIn() {\n return this.canZoomHeight;\n }\n\n get canZoomHeight() {\n return !this.isZoomed && this.$image.height() < this.$image.get(0).naturalHeight && Math.round(this.$image.width()) < Math.round(this.$component.width());\n }\n\n get canZoomOut() {\n return this.isZoomed;\n }\n\n get isZoomed() {\n return !this.$component.is(\".media-asset-component-fit-height.media-asset-component-fit-width\");\n }\n}\n\n$(MediaAssetComponent.initialize);\n","import Utility from './utility'\n\nlet ModQueue = {};\n\nModQueue.detailed_rejection_dialog = function() {\n $(\"#post_disapproval_post_id\").val($(this).data(\"post-id\"));\n $(\"#detailed-rejection-dialog\").find(\"form\")[0].reset();\n\n Utility.dialog(\"Detailed Rejection\", \"#detailed-rejection-dialog\");\n return false;\n}\n\n$(function() {\n $(document).on(\"click.danbooru\", \".detailed-rejection-link\", ModQueue.detailed_rejection_dialog);\n});\n\nexport default ModQueue\n","import Cookie from './cookie'\n\nlet NewsUpdate = {};\n\nNewsUpdate.initialize = function() {\n $(\"#close-news-ticker-link\").on(\"click.danbooru\", function(e) {\n $(\"#news-updates\").hide();\n\n var key = $(\"#news-updates\").data(\"id\").toString();\n Cookie.put(\"news-ticker\", key);\n });\n}\n\n$(function() {\n NewsUpdate.initialize();\n});\n\nexport default NewsUpdate\n","import \"jquery-ui/ui/widgets/draggable\";\nimport \"jquery-ui/ui/widgets/resizable\";\nimport \"jquery-ui/themes/base/draggable.css\";\nimport \"jquery-ui/themes/base/resizable.css\";\n\nimport CurrentUser from './current_user';\nimport Utility, { clamp } from './utility';\n\nclass Note {\n static HIDE_DELAY = 250;\n static NORMALIZE_ATTRIBUTES = ['letter-spacing', 'line-height', 'margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'padding-left', 'padding-right', 'padding-top', 'padding-bottom'];\n static COPY_ATTRIBUTES = ['background-color', 'border-radius', 'transform', 'justify-content', 'align-items'];\n static BOX_LEVEL_CLASSES = Array.from({length: 5}, (_, i) => 'level-' + (i + 1));\n static RESIZE_HANDLES = \"se, nw\";\n\n // Notes must be at least 10x10 in size so they're big enough to drag and resize.\n static MIN_NOTE_SIZE = 10;\n\n static dragging = false;\n static notes = new Set();\n static timeouts = [];\n\n id = null;\n x = null;\n y = null;\n w = null;\n h = null;\n box = null;\n body = null;\n $note_container = null;\n has_rotation = false;\n\n static Box = class {\n note = null;\n $note_box = null;\n $inner_border = null;\n\n constructor(note) {\n this.note = note;\n this.$note_box = $('
    ');\n this.note.$note_container.append(this.$note_box);\n\n if (note.embed) {\n this.$note_box.addClass(\"embedded\");\n this.$inner_border = $('
    ');\n this.$note_box.append(this.$inner_border);\n }\n\n if (this.note.is_new()) {\n this.$note_box.addClass(\"unsaved\");\n }\n\n this.$note_box.draggable({\n containment: this.note.$note_container,\n });\n\n this.$note_box.resizable({\n containment: this.note.$note_container,\n handles: Note.RESIZE_HANDLES,\n minWidth: Note.MIN_NOTE_SIZE,\n minHeight: Note.MIN_NOTE_SIZE,\n });\n\n this.$note_box.on(\"click.danbooru\", this.on_click.bind(this));\n this.$note_box.on(\"mouseenter.danbooru\", this.on_mouseenter.bind(this));\n this.$note_box.on(\"mouseleave.danbooru\", this.on_mouseleave.bind(this));\n this.$note_box.on(\"dragstart.danbooru resizestart.danbooru\", this.on_dragstart.bind(this));\n this.$note_box.on(\"dragstop.danbooru resizestop.danbooru\", this.on_dragstop.bind(this));\n }\n\n on_click() {\n if (!Utility.test_max_width(660)) {\n this.note.toggle_selected();\n } else if (this.$note_box.hasClass(\"viewing\")) {\n this.note.body.hide();\n this.$note_box.removeClass(\"viewing\");\n } else {\n $(\".note-box\").removeClass(\"viewing\");\n this.note.body.show();\n this.$note_box.addClass(\"viewing\");\n }\n }\n\n on_mouseenter() {\n // Don't show note bodies if we mouseover another note while dragging or resizing.\n if (!Note.dragging) {\n this.note.body.show();\n }\n }\n\n on_mouseleave() {\n this.note.body.hide();\n }\n\n on_dragstart() {\n this.$note_box.addClass(\"unsaved\");\n Note.Body.hide_all();\n Note.dragging = true;\n }\n\n // Reset the note box placement after the box is dragged or resized. Dragging the note\n // changes the CSS coordinates to pixels, so we have to rescale them and convert back\n // to percentage coordinates.\n on_dragstop() {\n let x = this.$note_box.position().left / this.note.scale_factor;\n let y = this.$note_box.position().top / this.note.scale_factor;\n let w = this.$note_box.width() / this.note.scale_factor;\n let h = this.$note_box.height() / this.note.scale_factor;\n\n this.place_note(x, y, w, h);\n this.note.body.show();\n Note.dragging = false;\n }\n\n // Place the note box. The input values are pixel coordinates relative to the full image.\n place_note(x, y, w, h, was_nudged = false) {\n if (this.note.embed && this.note.has_rotation && !was_nudged) {\n let position = this.get_min_max_position();\n x = position.norm_left / this.note.scale_factor;\n y = position.norm_top / this.note.scale_factor;\n }\n\n this.note.w = Math.round(clamp(w, Note.MIN_NOTE_SIZE, this.note.post_width));\n this.note.h = Math.round(clamp(h, Note.MIN_NOTE_SIZE, this.note.post_height));\n this.note.x = Math.round(clamp(x, 0, this.note.post_width - this.note.w));\n this.note.y = Math.round(clamp(y, 0, this.note.post_height - this.note.h));\n\n this.$note_box.css({\n top: (100 * this.note.y / this.note.post_height) + '%',\n left: (100 * this.note.x / this.note.post_width) + '%',\n width: (100 * this.note.w / this.note.post_width) + '%',\n height: (100 * this.note.h / this.note.post_height) + '%',\n });\n }\n\n copy_style_attributes() {\n let $note_box = this.$note_box;\n let $attribute_child = $note_box.find('.note-box-attributes');\n let has_rotation = false;\n\n Note.COPY_ATTRIBUTES.forEach((attribute)=>{\n const attribute_value = this.permitted_style_values(attribute, $attribute_child);\n $note_box.css(attribute, attribute_value);\n\n if (attribute === \"transform\" && attribute_value.startsWith(\"rotate\")) {\n has_rotation = true;\n }\n });\n\n if (has_rotation) {\n const current_left = Math.round(parseFloat($note_box.css(\"left\")));\n const current_top = Math.round(parseFloat($note_box.css(\"top\")));\n const position = this.get_min_max_position();\n\n // Checks for the scenario where the user sets invalid box values through the API\n // or by adjusting the box dimensions through the browser's dev console before saving\n if (current_left !== position.norm_left || current_top !== position.norm_top) {\n $note_box.css({\n top: position.percent_top,\n left: position.percent_left,\n });\n\n $note_box.addClass(\"out-of-bounds\");\n } else {\n $note_box.removeClass(\"out-of-bounds\");\n }\n\n this.note.has_rotation = true;\n } else {\n this.note.has_rotation = false;\n }\n\n $note_box.removeClass(Note.BOX_LEVEL_CLASSES);\n const level_class = ($attribute_child.attr('class') || \"\").split(/\\s+/).filter((klass) => Note.BOX_LEVEL_CLASSES.includes(klass))[0];\n if (level_class) {\n $note_box.addClass(level_class);\n }\n }\n\n permitted_style_values(attribute, $attribute_child) {\n if ($attribute_child.length === 0) {\n return \"\";\n }\n\n let found_attribute = $attribute_child.attr('style').split(';').filter(val => val.match(RegExp(`(^| )${attribute}:`)));\n if (found_attribute.length === 0) {\n return \"\";\n }\n\n let [, value] = found_attribute[0].trim().split(':').map(val => val.trim());\n if (attribute === \"background-color\") {\n const color_code = $attribute_child.css('background-color');\n return color_code.startsWith('rgba') ? \"\" : value;\n }\n\n if (attribute === \"transform\") {\n let rotate_match = value.match(/rotate\\([^)]+\\)/);\n return rotate_match ? rotate_match[0] : \"\";\n }\n\n return value;\n }\n\n key_nudge(event) {\n switch (event.originalEvent.key) {\n case \"ArrowUp\":\n this.note.y--;\n break;\n case \"ArrowDown\":\n this.note.y++;\n break;\n case \"ArrowLeft\":\n this.note.x--;\n break;\n case \"ArrowRight\":\n this.note.x++;\n break;\n default:\n // do nothing\n }\n\n this.place_note(this.note.x, this.note.y, this.note.w, this.note.h, true);\n Note.Body.hide_all();\n this.$note_box.addClass(\"unsaved\");\n event.preventDefault();\n }\n\n key_resize(event) {\n switch (event.originalEvent.key) {\n case \"ArrowUp\":\n this.note.h--;\n break;\n case \"ArrowDown\":\n this.note.h++;\n break;\n case \"ArrowLeft\":\n this.note.w--;\n break;\n case \"ArrowRight\":\n this.note.w++;\n break;\n default:\n // do nothing\n }\n\n this.place_note(this.note.x, this.note.y, this.note.w, this.note.h);\n Note.Body.hide_all();\n this.$note_box.addClass(\"unsaved\");\n event.preventDefault();\n }\n\n get_min_max_position(current_top = null, current_left = null, current_height = null, current_width = null) {\n let $note_box = this.$note_box;\n const computed_style = window.getComputedStyle($note_box[0]);\n\n current_top = (current_top === null ? parseFloat(computed_style.top) : current_top);\n current_left = (current_left === null ? parseFloat(computed_style.left) : current_left);\n current_height = current_height || $note_box.height();\n current_width = current_width || $note_box.width();\n\n const image_height = this.note.image_height;\n const image_width = this.note.image_width;\n const box_data = this.get_bounding_box(current_height, current_width);\n\n if (((box_data.max_x - box_data.min_x) <= image_width) && ((box_data.max_y - box_data.min_y) <= image_height)) {\n current_top = Math.min(Math.max(current_top, -box_data.min_y, 0), image_height - box_data.max_y - 2, image_height - box_data.min_y - box_data.max_y - 2, image_height);\n current_left = Math.min(Math.max(current_left, -box_data.min_x, 0), image_width - box_data.max_x - 2, image_width - box_data.min_x - box_data.max_x - 2, image_width);\n } else {\n Utility.error(\"Box too large to be rotated!\");\n $note_box.css('transform', 'none');\n }\n\n return {\n norm_top: Math.round(current_top),\n norm_left: Math.round(current_left),\n percent_top: (100 * (current_top / image_height)) + '%',\n percent_left: (100 * (current_left / image_width)) + '%',\n };\n }\n\n get_bounding_box(height = null, width = null) {\n let $note_box = this.$note_box;\n height = height || $note_box.height();\n width = width || $note_box.width();\n let old_coord = [[0, 0], [width, 0], [0, height], [width, height]];\n const computed_style = window.getComputedStyle($note_box[0]);\n const match = computed_style.transform.match(/matrix\\(([-e0-9.]+), ([-e0-9.]+)/);\n\n if (!match) {\n return {\n min_x: 0,\n min_y: 0,\n max_x: width,\n max_y: height,\n norm_coord: old_coord,\n degrees: 0,\n }\n }\n\n const costheta = Math.round(match[1] * 1000) / 1000;\n const sintheta = Math.round(match[2] * 1000) / 1000;\n let trans_x = width / 2;\n let trans_y = height / 2;\n let min_x = Infinity;\n let max_x = 0;\n let min_y = Infinity;\n let max_y = 0;\n\n const new_coord = old_coord.map((coord)=>{\n let temp_x = coord[0] - trans_x;\n let temp_y = coord[1] - trans_y;\n let rotated_x = (temp_x * costheta) - (temp_y * sintheta);\n let rotated_y = (temp_x * sintheta) + (temp_y * costheta);\n let new_x = rotated_x + trans_x;\n let new_y = rotated_y + trans_y;\n min_x = Math.min(min_x, new_x);\n max_x = Math.max(max_x, new_x);\n min_y = Math.min(min_y, new_y);\n max_y = Math.max(max_y, new_y);\n return [new_x, new_y];\n });\n\n const norm_coord = new_coord.map((coord)=>{\n return [coord[0] - min_x, coord[1] - min_y];\n });\n\n const radians_per_degree = 0.017453292519943295;\n const degrees = Math.asin(sintheta) / radians_per_degree;\n\n return {\n min_x: min_x,\n min_y: min_y,\n max_x: max_x,\n max_y: max_y,\n norm_coord: norm_coord,\n degrees: degrees,\n };\n }\n\n show_highlighted() {\n this.note.body.show();\n $(\".note-box-highlighted\").removeClass(\"note-box-highlighted\");\n this.$note_box.addClass(\"note-box-highlighted\");\n this.$note_box[0].scrollIntoView(false);\n }\n\n // Rescale font sizes of embedded notes when the image is resized.\n static scale_all() {\n let $container = $(\".note-container\");\n\n if ($container.length === 0) {\n return;\n }\n\n Note.Body.hide_all();\n\n let large_width = parseFloat($container.data(\"large-width\"));\n let ratio = $container.width() / large_width;\n let font_percentage = ratio * 100;\n\n $container.css('font-size', font_percentage + '%');\n }\n\n static toggle_all() {\n Note.Body.hide_all();\n $(\".note-container\").toggleClass(\"hide-notes\");\n }\n }\n\n static Body = class {\n note = null;\n $note_body = null;\n\n constructor(note) {\n this.note = note;\n this.$note_body = $('
    ');\n this.note.$note_container.append(this.$note_body);\n\n this.$note_body.on(\"mouseover.danbooru\", this.on_mouseover.bind(this));\n this.$note_body.on(\"mouseout.danbooru\", this.on_mouseout.bind(this));\n this.$note_body.on(\"click.danbooru\", this.on_click.bind(this));\n }\n\n initialize() {\n let $note_body = this.$note_body;\n let $note_box = this.note.box.$note_box;\n\n if (this.note.embed && this.note.has_rotation) {\n const box_data = this.note.box.get_bounding_box();\n // Select the lowest box corner to the farthest left\n let selected_corner = box_data.norm_coord.reduce(function (selected, coord) { return (selected[1] > coord[1]) || (selected[1] === coord[1] && selected[0] < coord[0]) ? selected : coord; });\n let normalized_degrees = box_data.degrees % 90.0;\n // Align to the left or right body corner depending upon the box angle\n let body_corner = $note_box.position().left - (normalized_degrees > 0.0 && normalized_degrees <= 45.0 ? $note_body.width() : 0);\n\n $note_body.css({\n top: $note_box.position().top + selected_corner[1] + 5,\n left: body_corner + selected_corner[0],\n });\n } else {\n $note_body.css({\n top: $note_box.position().top + $note_box.height() + 5,\n left: $note_box.position().left,\n });\n }\n\n this.bound_position();\n }\n\n bound_position() {\n var $image = this.note.$note_container;\n var doc_width = $image.offset().left + $image.width();\n let $note_body = this.$note_body;\n\n if ($note_body.offset().left + $note_body.width() > doc_width) {\n $note_body.css({\n left: $note_body.position().left - 10 - ($note_body.offset().left + $note_body.width() - doc_width)\n });\n }\n }\n\n show() {\n Note.Body.hide_all();\n\n if (!this.resized) {\n this.resize();\n this.resized = true;\n }\n\n this.$note_body.show();\n this.initialize();\n }\n\n hide(delay = Note.HIDE_DELAY) {\n Note.timeouts.push(setTimeout(() => this.$note_body.hide(), delay));\n }\n\n static hide_all() {\n Note.timeouts.forEach(clearTimeout);\n Note.timeouts = [];\n $(\".note-container div.note-body\").hide();\n }\n\n resize() {\n let $note_body = this.$note_body;\n\n $note_body.css(\"min-width\", \"\");\n var w = $note_body.width();\n var h = $note_body.height();\n var golden_ratio = 1.6180339887;\n var last = 0;\n var x = 0;\n var lo = 0;\n var hi = 0;\n\n if ((w / h) < golden_ratio) {\n lo = 140;\n hi = 400;\n\n do {\n last = w;\n x = (lo + hi) / 2;\n $note_body.css(\"min-width\", x);\n w = $note_body.width();\n h = $note_body.height();\n\n if ((w / h) < golden_ratio) {\n lo = x;\n } else {\n hi = x;\n }\n } while ((lo < hi) && (w > last));\n } else if ($note_body[0].scrollWidth <= $note_body.width()) {\n lo = 20;\n hi = w;\n\n do {\n x = (lo + hi) / 2;\n $note_body.css(\"min-width\", x);\n if ($note_body.height() > h) {\n lo = x\n } else {\n hi = x;\n }\n } while ((hi - lo) > 4);\n if ($note_body.height() > h) {\n $note_body.css(\"min-width\", hi);\n }\n }\n }\n\n display_text(text) {\n this.set_text(text);\n\n if (this.note.embed) {\n let $note_inner_box = this.note.box.$inner_border;\n\n // Reset the font size so that the normalization calculations will be correct\n $note_inner_box.css(\"font-size\", this.note.base_font_size + \"px\");\n this.note.normalize_sizes($note_inner_box.children(), this.note.base_font_size);\n\n // Clear the font size so that the fonts will be scaled to the current value\n $note_inner_box.css(\"font-size\", \"\");\n this.note.box.copy_style_attributes();\n }\n\n this.resize();\n this.bound_position();\n }\n\n set_text(text) {\n text = text ?? \"\";\n text = text.replace(//g, '

    ');\n text = text.replace(/<\\/tn>/g, '

    ');\n text = text.replace(/\\n/g, '
    ');\n\n if (this.note.embed) {\n this.note.box.$inner_border.html(text);\n this.$note_body.html(\"Click to edit\");\n } else if (text) {\n this.$note_body.html(text);\n } else {\n this.$note_body.html(\"Click to edit\");\n }\n }\n\n async preview_text(text) {\n this.display_text(\"Loading...\");\n let response = await $.post(\"/note_previews\", { body: text });\n\n this.display_text(response.body);\n this.initialize();\n this.$note_body.show();\n }\n\n on_mouseover(e) {\n this.show();\n }\n\n on_mouseout() {\n this.hide();\n }\n\n on_click(e) {\n // don't open the note edit dialog when the user clicks a link in the note body.\n if ($(e.target).is(\"a\")) {\n return;\n }\n\n if (CurrentUser.data(\"is-anonymous\")) {\n Utility.notice(\"You must be logged in to edit notes\");\n } else {\n Note.Edit.show(this.note);\n }\n }\n }\n\n static Edit = class {\n static show(note) {\n if ($(\".note-box\").hasClass(\"editing\")) {\n return;\n }\n\n let $textarea = $('');\n $textarea.val(note.original_body);\n $textarea.css({\n height: \"85%\",\n resize: \"none\",\n });\n\n let $dialog = $('
    ');\n let note_title = note.is_new() ? 'Creating new note' : `Editing note #${note.id}`;\n\n $dialog.append('' + note_title + ' (
    view help)');\n $dialog.append($textarea);\n\n $dialog.dialog({\n width: 360,\n height: 240,\n position: {\n my: \"right\",\n at: \"right-20\",\n of: window\n },\n classes: {\n \"ui-dialog\": \"note-edit-dialog\",\n },\n open: () => {\n Utility.keydown(\"ctrl+return\", \"save_note\", () => this.save($dialog, note), \".note-edit-dialog textarea\");\n $(\".note-edit-dialog textarea\").on(\"input.danbooru\", (e) => this.on_input(note));\n $(\".note-box\").addClass(\"editing\");\n },\n close: () => {\n $(\".note-box\").removeClass(\"editing\");\n },\n buttons: {\n \"Save\": () => Note.Edit.save($dialog, note),\n \"Preview\": () => Note.Edit.preview($dialog, note),\n \"Cancel\": () => Note.Edit.cancel($dialog, note),\n \"Delete\": () => Note.Edit.destroy($dialog, note),\n \"History\": () => Note.Edit.history($dialog, note),\n }\n });\n\n $textarea.selectEnd();\n }\n\n static on_input(note) {\n note.box.$note_box.addClass(\"unsaved\");\n }\n\n static async save($dialog, note) {\n let $note_box = note.box.$note_box;\n let text = $dialog.find(\"textarea\").val();\n\n let params = {\n x: note.x,\n y: note.y,\n width: note.w,\n height: note.h,\n body: text\n };\n\n note.original_body = text;\n note.body.preview_text(text);\n\n try {\n if (note.is_new()) {\n params.post_id = note.post_id;\n let response = await $.ajax(\"/notes.json\", { type: \"POST\", data: { note: params }});\n note.id = response.id;\n } else {\n await $.ajax(`/notes/${note.id}.json`, { type: \"PUT\", data: { note: params }});\n }\n\n $dialog.dialog(\"close\");\n $note_box.removeClass(\"unsaved\");\n } catch (xhr) {\n Utility.error(\"Error: \" + (xhr.responseJSON.reason || xhr.responseJSON.reasons.join(\"; \")));\n }\n }\n\n static async preview($dialog, note) {\n let text = $dialog.find(\"textarea\").val();\n note.body.preview_text(text);\n }\n\n static cancel($dialog, _note) {\n $dialog.dialog(\"close\");\n }\n\n static async destroy($dialog, note) {\n if (!note.is_new() && !confirm(\"Do you really want to delete this note?\")) {\n return;\n }\n\n if (!note.is_new()) {\n await $.ajax(`/notes/${note.id}.json`, { type: \"DELETE\" });\n }\n\n note.box.$note_box.remove();\n note.body.$note_body.remove();\n Note.notes.delete(note);\n\n $dialog.dialog(\"close\");\n }\n\n static history($dialog, note) {\n if (!note.is_new()) {\n window.location.href = `/note_versions?search[note_id]=${note.id}`;\n }\n\n $dialog.dialog(\"close\");\n }\n }\n\n static TranslationMode = class {\n static toggle() {\n if ($(\"body\").hasClass(\"mode-translation\")) {\n Note.TranslationMode.stop();\n } else {\n Note.TranslationMode.start();\n }\n }\n\n static start() {\n $(document.body).addClass(\"mode-translation\");\n $(\"#image\").off(\"click.danbooru\", Note.Box.toggle_all);\n $(\"#image\").on(\"mousedown.danbooru.note\", Note.TranslationMode.Drag.start);\n\n Utility.notice('Translation mode is on. Drag on the image to create notes. Turn translation mode off (shortcut is n).');\n $(\"#notice a:contains(Turn translation mode off)\").on(\"click.danbooru\", Note.TranslationMode.stop);\n }\n\n static stop() {\n $(\"#note-preview\").hide();\n $(\"#image\").on(\"click.danbooru\", Note.Box.toggle_all);\n $(\"#image\").off(\"mousedown.danbooru.note\", Note.TranslationMode.Drag.start);\n $(document).off(\"mouseup.danbooru\", Note.TranslationMode.Drag.stop);\n $(document).off(\"mousemove.danbooru\", Note.TranslationMode.Drag.drag);\n $(document.body).removeClass(\"mode-translation\");\n $(\"#close-notice-link\").click();\n }\n\n static Drag = class {\n static dragStartX = 0;\n static dragStartY = 0;\n\n static start(e) {\n if (e.which !== 1) {\n return;\n }\n\n e.preventDefault(); /* don't drag the image */\n $(document).on(\"mousemove.danbooru\", Note.TranslationMode.Drag.drag);\n $(document).on(\"mouseup.danbooru\", Note.TranslationMode.Drag.stop);\n Note.TranslationMode.Drag.dragStartX = e.pageX;\n Note.TranslationMode.Drag.dragStartY = e.pageY;\n Note.dragging = true;\n }\n\n static drag(e) {\n var $image = $(\"#image\");\n var offset = $image.offset();\n\n // (x0, y0) is the top left point of the drag box. (x1, y1) is the bottom right point.\n let x0 = clamp(e.pageX, offset.left, Note.TranslationMode.Drag.dragStartX);\n let y0 = clamp(e.pageY, offset.top, Note.TranslationMode.Drag.dragStartY);\n let x1 = clamp(e.pageX, Note.TranslationMode.Drag.dragStartX, offset.left + $image.width());\n let y1 = clamp(e.pageY, Note.TranslationMode.Drag.dragStartY, offset.top + $image.height());\n\n // Convert from page-relative coordinates to image-relatives coordinates.\n let x = x0 - offset.left;\n let y = y0 - offset.top;\n let w = x1 - x0;\n let h = y1 - y0;\n\n // Only show the new note box after we've dragged a minimum distance. This is to avoid\n // accidentally creating tiny notes if we drag a small distance while trying to toggle notes.\n if (w >= Note.MIN_NOTE_SIZE || h >= Note.MIN_NOTE_SIZE) {\n $(\"#note-preview\").show();\n }\n\n if ($(\"#note-preview\").is(\":visible\")) {\n $('#note-preview').css({ left: x, top: y, width: w, height: h });\n }\n }\n\n static stop() {\n Note.dragging = false;\n $(document).off(\"mousemove.danbooru\", Note.TranslationMode.Drag.drag);\n $(document).off(\"mouseup.danbooru\", Note.TranslationMode.Drag.stop);\n\n if ($(\"#note-preview\").is(\":visible\")) {\n let scale_factor = $(\".note-container\").width() / parseInt($(\".note-container\").attr(\"data-width\"));\n\n new Note({\n x: $(\"#note-preview\").position().left / scale_factor,\n y: $(\"#note-preview\").position().top / scale_factor,\n w: $(\"#note-preview\").width() / scale_factor,\n h: $(\"#note-preview\").height() / scale_factor,\n });\n\n $(\"#note-preview\").hide();\n $(\".note-container\").removeClass(\"hide-notes\");\n } else { /* If we didn't drag far enough, treat it as a click and toggle displaying notes. */\n Note.Box.toggle_all();\n }\n }\n }\n }\n\n constructor({ x, y, w, h, id = null, original_body = null, sanitized_body = null } = {}) {\n this.$note_container = $(\".note-container\");\n\n this.id = id;\n this.post_id = this.$note_container.data(\"id\");\n this.embed = Utility.meta(\"post-has-embedded-notes\") === \"true\";\n this.original_body = original_body;\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n\n this.box = new Note.Box(this);\n this.body = new Note.Body(this);\n\n this.box.place_note(x, y, w, h);\n this.body.display_text(sanitized_body);\n\n Note.notes.add(this);\n }\n\n is_new() {\n return this.id === null;\n }\n\n // The ratio of the current image size to the full image size.\n get scale_factor() {\n return this.$note_container.width() / this.post_width;\n }\n\n // The width and height of the full-size original image in pixels.\n get post_width() {\n return parseInt(this.$note_container.attr(\"data-width\"));\n }\n\n get post_height() {\n return parseInt(this.$note_container.attr(\"data-height\"));\n }\n\n // The current width and height of the image in pixels. Will be smaller than the post width\n // if the sample image is being displayed, or if the image is resized to fit the screen.\n get image_width() {\n return parseInt(this.$note_container.width());\n }\n\n get image_height() {\n return parseInt(this.$note_container.height());\n }\n\n // The initial font size of the note container. Embedded notes are scaled relative to this value.\n get base_font_size() {\n return parseFloat(this.$note_container.parent().css(\"font-size\"));\n }\n\n is_selected() {\n return this.box.$note_box.hasClass(\"movable\");\n }\n\n toggle_selected() {\n return this.is_selected() ? this.unselect() : this.select();\n }\n\n select() {\n Note.unselect_all();\n this.box.$note_box.addClass(\"movable\");\n Utility.keydown(\"up down left right\", \"nudge_note\", this.box.key_nudge.bind(this.box));\n Utility.keydown(\"shift+up shift+down shift+left shift+right\", \"resize_note\", this.box.key_resize.bind(this.box));\n }\n\n unselect() {\n this.box.$note_box.removeClass(\"movable\");\n $(document).off(\"keydown.nudge_note\");\n $(document).off(\"keydown.resize_note\");\n }\n\n normalize_sizes($note_elements, parent_font_size) {\n if ($note_elements.length === 0) {\n return;\n }\n\n $note_elements.toArray().forEach((element) => {\n const $element = $(element);\n const computed_styles = window.getComputedStyle(element);\n const font_size = parseFloat(computed_styles.fontSize);\n\n Note.NORMALIZE_ATTRIBUTES.forEach((attribute) => {\n const original_size = parseFloat(computed_styles[attribute]) || 0;\n const relative_em = original_size / font_size;\n $element.css(attribute, relative_em + \"em\");\n });\n\n const font_percentage = 100 * (font_size / parent_font_size);\n $element.css(\"font-size\", font_percentage + \"%\");\n $element.attr(\"size\", \"\");\n\n this.normalize_sizes($element.children(), font_size);\n });\n }\n\n static find(id) {\n return Array.from(Note.notes).find(note => note.id === id);\n }\n\n static load_all() {\n $(\"#notes article\").toArray().forEach(article => {\n var $article = $(article);\n\n new Note({\n id: $article.data(\"id\"),\n x: $article.data(\"x\"),\n y: $article.data(\"y\"),\n w: $article.data(\"width\"),\n h: $article.data(\"height\"),\n original_body: $article.data(\"body\"),\n sanitized_body: $article.html()\n });\n });\n }\n\n static initialize_all() {\n if ($(\"#c-posts #a-show #image\").length === 0 || $(\"video#image\").length || $(\"canvas#image\").length) {\n return;\n }\n\n Note.load_all();\n Note.Box.scale_all();\n\n $(document).on(\"click.danbooru\", \"#translate\", (e) => {\n Note.TranslationMode.toggle();\n e.preventDefault();\n });\n\n this.initialize_highlight();\n $(document).on(\"hashchange.danbooru.note\", this.initialize_highlight);\n\n $(window).on(\"resize.danbooru.note_scale\", Note.Box.scale_all);\n $(\"#image\").on(\"click.danbooru\", Note.Box.toggle_all);\n }\n\n static initialize_highlight() {\n var matches = window.location.hash.match(/^#note-(\\d+)$/);\n\n if (matches) {\n let note_id = parseInt(matches[1]);\n let note = Note.find(note_id);\n note.box.show_highlighted();\n }\n }\n\n static unselect_all() {\n Note.notes.forEach(note => note.unselect());\n }\n}\n\n$(function() {\n Note.initialize_all();\n});\n\nexport default Note\n\n","require(\"jquery-ui/ui/widgets/sortable\");\nrequire(\"jquery-ui/themes/base/sortable.css\");\n\nlet Pool = {};\n\nPool.initialize_all = function() {\n if ($(\"#c-posts\").length && $(\"#a-show\").length) {\n this.initialize_add_to_pool_link();\n }\n\n if ($(\"#c-pool-orders,#c-favorite-group-orders\").length) {\n this.initialize_simple_edit();\n }\n}\n\nPool.initialize_add_to_pool_link = function() {\n $(\"#add-to-pool-dialog\").dialog({autoOpen: false});\n\n $(\"#pool\").on(\"click.danbooru\", function(e) {\n e.preventDefault();\n $(\"#add-to-pool-dialog\").dialog(\"open\");\n });\n}\n\nPool.initialize_simple_edit = function() {\n $(\"#sortable\").sortable({\n placeholder: \"ui-state-placeholder\"\n });\n $(\"#sortable\").disableSelection();\n\n $(\"#ordering-form\").submit(function(e) {\n $.ajax({\n type: \"put\",\n url: e.target.action,\n data: $(\"#sortable\").sortable(\"serialize\") + \"&\" + $(e.target).serialize()\n });\n e.preventDefault();\n });\n}\n\n$(document).ready(function() {\n Pool.initialize_all();\n});\n\nexport default Pool\n","import { createTooltip } from './utility';\n\nclass PopupMenuComponent {\n static initialize() {\n createTooltip(\"popup-menu-tooltip\", {\n target: \"a.popup-menu-button\",\n placement: \"bottom-start\",\n trigger: \"click\",\n touch: \"hold\",\n appendTo: \"parent\",\n animation: null,\n content: PopupMenuComponent.content,\n });\n\n $(document).on(\"click.danbooru\", \".popup-menu-content\", PopupMenuComponent.onMenuItemClicked);\n }\n\n static content(element) {\n let $content = $(element).parents(\".popup-menu\").find(\".popup-menu-content\");\n $content.show();\n return $content.get(0);\n }\n\n // Hides the menu when a menu item is clicked.\n static onMenuItemClicked(event) {\n let menuHideOnClick = $(event.target).parents(\".popup-menu\").data(\"hide-on-click\");\n let itemHideOnClick = $(event.target).parents(\"li\").data(\"hide-on-click\");\n let hideOnClick = itemHideOnClick !== undefined ? itemHideOnClick : menuHideOnClick;\n\n if (hideOnClick) {\n let tippy = $(event.target).parents(\"[data-tippy-root]\").get(0)?._tippy;\n tippy?.hide();\n }\n }\n}\n\n$(document).ready(PopupMenuComponent.initialize);\n\nexport default PopupMenuComponent;\n","import Post from './posts.js'\nimport Utility from './utility'\n\nlet PostModeMenu = {};\n\nPostModeMenu.initialize = function() {\n if ($(\"#c-posts\").length || $(\"#c-favorites\").length || $(\"#c-pools\").length) {\n this.initialize_selector();\n this.initialize_preview_link();\n this.initialize_edit_form();\n this.initialize_tag_script_field();\n this.initialize_shortcuts();\n PostModeMenu.change();\n }\n}\n\nPostModeMenu.initialize_shortcuts = function() {\n Utility.keydown(\"1 2 3 4 5 6 7 8 9 0\", \"change_tag_script\", PostModeMenu.change_tag_script);\n}\n\nPostModeMenu.show_notice = function(mode, tag_script_index = 0) {\n if (mode === \"add-fav\") {\n Utility.notice(\"Switched to favorite mode. Click a post to favorite it.\");\n } else if (mode === \"remove-fav\") {\n Utility.notice(\"Switched to unfavorite mode. Click a post to unfavorite it.\");\n } else if (mode === \"edit\") {\n Utility.notice(\"Switched to edit mode. Click a post to edit it.\");\n } else if (mode === \"tag-script\") {\n Utility.notice(`Switched to tag script #${tag_script_index}. To switch tag scripts, use the number keys.`);\n }\n}\n\nPostModeMenu.change_tag_script = function(e) {\n if ($(\"#mode-box select\").val() === \"tag-script\") {\n var old_tag_script_id = localStorage.getItem(\"current_tag_script_id\") || \"1\";\n\n var keycode = e.which >= 96 ? e.which - 48 : e.which;\n var new_tag_script_id = String.fromCharCode(keycode);\n var new_tag_script = localStorage.getItem(\"tag-script-\" + new_tag_script_id);\n\n $(\"#tag-script-field\").val(new_tag_script);\n localStorage.setItem(\"current_tag_script_id\", new_tag_script_id);\n if (old_tag_script_id !== new_tag_script_id) {\n PostModeMenu.show_notice(\"tag-script\", new_tag_script_id);\n }\n\n e.preventDefault();\n }\n}\n\nPostModeMenu.initialize_selector = function() {\n let mode = localStorage.getItem(\"mode\");\n if (mode === null) {\n localStorage.setItem(\"mode\", \"view\");\n $(\"#mode-box select\").val(\"view\");\n } else {\n $(\"#mode-box select\").val(mode);\n }\n\n $(\"#mode-box select\").on(\"change.danbooru\", function(e) {\n PostModeMenu.change();\n $(\"#tag-script-field:visible\").focus().select();\n });\n}\n\nPostModeMenu.initialize_preview_link = function() {\n $(document).on(\"click.danbooru\", \".post-preview-container a\", PostModeMenu.click);\n}\n\nPostModeMenu.initialize_edit_form = function() {\n $(\"#quick-edit-div\").hide();\n\n $(document).on(\"click.danbooru\", \"#quick-edit-form button[name=cancel]\", function(e) {\n PostModeMenu.close_edit_form();\n e.preventDefault();\n });\n\n $(document).on(\"click.danbooru\", \"#quick-edit-form input[type=submit]\", async function(e) {\n e.preventDefault();\n let post_id = $(\"#quick-edit-form\").attr(\"data-post-id\");\n await Post.update(post_id, \"quick-edit\", { post: { tag_string: $(\"#post_tag_string\").val() }});\n });\n}\n\nPostModeMenu.close_edit_form = function() {\n $(\"#quick-edit-div\").slideUp(\"fast\");\n $(\"#post_tag_string\").data(\"uiAutocomplete\").close();\n}\n\nPostModeMenu.initialize_tag_script_field = function() {\n $(\"#tag-script-field\").blur(function(e) {\n var script = $(this).val();\n\n if (script) {\n var current_script_id = localStorage.getItem(\"current_tag_script_id\");\n localStorage.setItem(\"tag-script-\" + current_script_id, script);\n } else {\n $(\"#mode-box select\").val(\"view\");\n PostModeMenu.change();\n }\n });\n}\n\nPostModeMenu.change = function() {\n $(\"#quick-edit-div\").slideUp(\"fast\");\n var s = $(\"#mode-box select\").val();\n if (s === undefined) {\n return;\n }\n\n $(\"body\").attr(\"data-mode-menu-active\", s !== \"view\");\n $(\"body\").attr(\"data-mode-menu\", s);\n localStorage.setItem(\"mode\", s, 1);\n\n if (s === \"tag-script\") {\n var current_script_id = localStorage.getItem(\"current_tag_script_id\");\n if (!current_script_id) {\n current_script_id = \"1\";\n localStorage.setItem(\"current_tag_script_id\", current_script_id);\n }\n var script = localStorage.getItem(\"tag-script-\" + current_script_id);\n\n $(\"#tag-script-field\").val(script).show();\n PostModeMenu.show_notice(s, current_script_id);\n } else {\n $(\"#tag-script-field\").hide();\n PostModeMenu.show_notice(s);\n }\n}\n\nPostModeMenu.open_edit = function(post_id) {\n var $post = $(\"#post_\" + post_id);\n $(\"#quick-edit-div\").slideDown(\"fast\");\n $(\"#quick-edit-form\").attr(\"data-post-id\", post_id);\n $(\"#post_tag_string\").val($post.data(\"tags\") + \" \").focus().selectEnd();\n}\n\nPostModeMenu.click = function(e) {\n var s = $(\"#mode-box select\").val();\n var post_id = $(e.target).closest(\"article\").data(\"id\");\n\n if (s === \"add-fav\") {\n Post.tag(post_id, \"fav:me\");\n } else if (s === \"remove-fav\") {\n Post.tag(post_id, \"-fav:me\");\n } else if (s === \"edit\") {\n PostModeMenu.open_edit(post_id);\n } else if (s === \"tag-script\") {\n var current_script_id = localStorage.getItem(\"current_tag_script_id\");\n var tag_script = localStorage.getItem(\"tag-script-\" + current_script_id) ?? \"\";\n Post.tag(post_id, tag_script);\n } else {\n return;\n }\n\n e.preventDefault();\n}\n\n$(function() {\n PostModeMenu.initialize();\n});\n\nexport default PostModeMenu\n","import CurrentUser from './current_user';\nimport Utility from './utility';\nimport { createTooltip } from './utility';\nimport { hideAll } from 'tippy.js';\nimport 'tippy.js/dist/tippy.css';\n\nlet PostTooltip = {};\n\nPostTooltip.POST_SELECTOR = \"*:not(.ui-sortable-handle) > .post-preview .post-preview-image, .dtext-post-id-link\";\nPostTooltip.SHOW_DELAY = 500;\nPostTooltip.HIDE_DELAY = 125;\nPostTooltip.DURATION = 250;\nPostTooltip.instance = null;\n\nPostTooltip.initialize = function () {\n if (PostTooltip.disabled()) {\n return;\n }\n\n PostTooltip.instance = createTooltip(\"post-tooltip\", {\n delay: [PostTooltip.SHOW_DELAY, PostTooltip.HIDE_DELAY],\n duration: PostTooltip.DURATION,\n target: PostTooltip.POST_SELECTOR,\n touch: false,\n\n onCreate: PostTooltip.on_create,\n onShow: PostTooltip.on_show,\n onHide: PostTooltip.on_hide,\n });\n\n $(document).on(\"click.danbooru.postTooltip\", \".post-tooltip-disable\", PostTooltip.on_disable_tooltips);\n};\n\nPostTooltip.on_create = function (instance) {\n if (instance.reference === document.body) {\n return;\n }\n\n let title = instance.reference.getAttribute(\"title\");\n\n if (title) {\n instance.reference.setAttribute(\"data-title\", title);\n instance.reference.setAttribute(\"title\", \"\");\n }\n\n // Only show the tooltip after the mouse has stopped moving inside the thumbnail.\n $(instance.reference).on(\"mousemove.danbooru\", e => {\n instance.clearDelayTimeouts();\n instance.reference.dispatchEvent(new Event('mouseenter'));\n });\n};\n\nPostTooltip.on_show = async function (instance) {\n let post_id = null;\n let preview = false;\n let $target = $(instance.reference);\n let $tooltip = $(instance.popper);\n\n hideAll({ exclude: instance });\n\n // skip if tooltip has already been rendered.\n if ($tooltip.has(\".post-tooltip-body\").length) {\n return;\n }\n\n if ($target.is(\".dtext-post-id-link\")) {\n preview = true;\n post_id = /\\/posts\\/(\\d+)/.exec($target.attr(\"href\"))[1];\n } else {\n post_id = $target.parents(\"[data-id]\").data(\"id\");\n }\n\n try {\n $tooltip.addClass(\"tooltip-loading\");\n\n instance._request = $.get(`/posts/${post_id}`, { variant: \"tooltip\", preview: preview });\n let html = await instance._request;\n instance.setContent(html);\n\n $tooltip.removeClass(\"tooltip-loading\");\n } catch (error) {\n if (error.status !== 0 && error.statusText !== \"abort\") {\n Utility.error(`Error displaying tooltip for post #${post_id} (error: ${error.status} ${error.statusText})`);\n }\n }\n};\n\nPostTooltip.on_hide = function (instance) {\n if (instance._request?.state() === \"pending\") {\n instance._request.abort();\n }\n}\n\nPostTooltip.disabled = function (event) {\n return CurrentUser.data(\"disable-post-tooltips\");\n};\n\nPostTooltip.on_disable_tooltips = async function (event) {\n event.preventDefault();\n hideAll();\n\n if (CurrentUser.data(\"is-anonymous\")) {\n Utility.notice('You must login to disable tooltips');\n return;\n }\n\n await CurrentUser.update({ disable_post_tooltips: true });\n Utility.notice(`Tooltips disabled; check your account settings to re-enable.`);\n PostTooltip.instance[0].destroy();\n};\n\n$(document).ready(PostTooltip.initialize);\n\nexport default PostTooltip\n","import Utility from './utility';\n\nlet PostVersion = {};\n\nPostVersion.initialize_all = function() {\n if ($(\"#c-post-versions #a-index\").length) {\n PostVersion.initialize_undo();\n }\n};\n\nPostVersion.initialize_undo = function() {\n /* Expand the clickable area of the checkbox to the entire table cell. */\n $(\".post-version-select-column\").on(\"click.danbooru\", function(event) {\n $(event.target).find(\".post-version-select-checkbox:not(:disabled)\").prop(\"checked\", (_, checked) => !checked).change();\n });\n\n $(\"#post-version-select-all-checkbox\").on(\"change.danbooru\", function(event) {\n $(\"td .post-version-select-checkbox:not(:disabled)\").prop(\"checked\", $(\"#post-version-select-all-checkbox\").prop(\"checked\")).change();\n });\n\n $(\".post-version-select-checkbox\").on(\"change.danbooru\", function(event) {\n let checked = $(\"td .post-version-select-checkbox:checked\");\n $(\"#subnav-undo-selected-link\").text(`Undo selected (${checked.length})`).toggle(checked.length > 0);\n });\n\n $(\"#subnav-undo-selected-link\").on(\"click.danbooru\", PostVersion.undo_selected);\n};\n\nPostVersion.undo_selected = async function () {\n event.preventDefault();\n\n let updated = 0;\n let selected_rows = $(\"td .post-version-select-checkbox:checked\").parents(\"tr\");\n\n for (let row of selected_rows) {\n let id = $(row).data(\"id\");\n await $.ajax(`/post_versions/${id}/undo.json`, { method: \"PUT\" });\n\n updated++;\n Utility.notice(`${updated}/${selected_rows.length} changes undone.`);\n }\n};\n\n$(document).ready(PostVersion.initialize_all);\nexport default PostVersion;\n","import Utility from \"./utility\";\nimport { createTooltip } from \"./utility\";\n\nclass PostVotesTooltipComponent {\n // Trigger on the post score link; see PostVotesComponent.\n static TARGET_SELECTOR = \"span.post-votes span.post-score > a\";\n static SHOW_DELAY = 375;\n static HIDE_DELAY = 125;\n static DURATION = 250;\n static instance = null;\n\n static initialize() {\n PostVotesTooltipComponent.instance = createTooltip(\"post-votes-tooltip\", {\n delay: [PostVotesTooltipComponent.SHOW_DELAY, PostVotesTooltipComponent.HIDE_DELAY],\n duration: PostVotesTooltipComponent.DURATION,\n target: PostVotesTooltipComponent.TARGET_SELECTOR,\n\n onShow: PostVotesTooltipComponent.onShow,\n onHide: PostVotesTooltipComponent.onHide,\n });\n }\n\n static async onShow(instance) {\n let $target = $(instance.reference);\n let $tooltip = $(instance.popper);\n let postId = $target.parents(\"[data-id]\").data(\"id\");\n\n try {\n $tooltip.addClass(\"tooltip-loading\");\n\n instance._request = $.get(`/post_votes?search[post_id]=${postId}`, { variant: \"tooltip\" });\n let html = await instance._request;\n instance.setContent(html);\n\n $tooltip.removeClass(\"tooltip-loading\");\n } catch (error) {\n if (error.status !== 0 && error.statusText !== \"abort\") {\n Utility.error(`Error displaying votes for post #${postId} (error: ${error.status} ${error.statusText})`);\n }\n }\n }\n\n static async onHide(instance) {\n if (instance._request?.state() === \"pending\") {\n instance._request.abort();\n }\n }\n}\n\n$(document).ready(PostVotesTooltipComponent.initialize);\n\nexport default PostVotesTooltipComponent;\n","import CurrentUser from './current_user'\nimport Utility from './utility'\nimport Hammer from 'hammerjs'\nimport Cookie from './cookie'\nimport Note from './notes'\nimport Ugoira from './ugoira'\nimport Rails from '@rails/ujs'\n\nlet Post = {};\n\nPost.pending_update_count = 0;\nPost.SWIPE_THRESHOLD = 60;\nPost.SWIPE_VELOCITY = 0.6;\nPost.MAX_RECOMMENDATIONS = 45; // 3 rows of 9 posts at 1920x1080.\nPost.LOW_TAG_COUNT = 10;\nPost.HIGH_TAG_COUNT = 20;\nPost.EDIT_DIALOG_WIDTH = 640;\nPost.EDIT_DIALOG_MIN_HEIGHT = 320;\n\nPost.initialize_all = function() {\n\n if ($(\"#c-posts\").length) {\n this.initialize_saved_searches();\n }\n\n if ($(\"#c-posts\").length && $(\"#a-index\").length) {\n this.initialize_excerpt();\n this.initialize_gestures();\n this.initialize_post_preview_size_menu();\n this.initialize_post_preview_options_menu();\n }\n\n if ($(\"#c-posts\").length && $(\"#a-show\").length) {\n this.initialize_links();\n this.initialize_post_relationship_previews();\n this.initialize_post_sections();\n this.initialize_post_image_resize_links();\n this.initialize_recommended();\n this.initialize_ugoira_player();\n }\n\n if ($(\"#c-posts #a-show, #c-uploads #a-show\").length) {\n this.initialize_edit_dialog();\n }\n\n this.initialize_ruffle_player();\n\n $(window).on('danbooru:initialize_saved_seraches', () => {\n Post.initialize_saved_searches();\n });\n}\n\nPost.initialize_gestures = function() {\n if (CurrentUser.data(\"disable-mobile-gestures\")) {\n return;\n }\n var $body = $(\"body\");\n if ($body.data(\"hammer\")) {\n return;\n }\n if (!Utility.test_max_width(660)) {\n return;\n }\n $(\".image-container\").css({overflow: \"visible\"});\n var hasPrev = $(\".paginator a[rel~=prev]\").length;\n var hasNext = $(\".paginator a[rel~=next]\").length;\n\n var hammer = new Hammer($body[0], {touchAction: 'pan-y', recognizers: [[Hammer.Swipe, { threshold: Post.SWIPE_THRESHOLD, velocity: Post.SWIPE_VELOCITY, direction: Hammer.DIRECTION_HORIZONTAL }]], inputClass: Hammer.TouchInput});\n $body.data(\"hammer\", hammer);\n\n if (hasPrev) {\n hammer.on(\"swiperight\", async function(e) {\n $(\"body\").css({\"transition-timing-function\": \"ease\", \"transition-duration\": \"0.2s\", \"opacity\": \"0\", \"transform\": \"translateX(150%)\"});\n await Utility.delay(200);\n Post.swipe_prev(e);\n });\n }\n\n if (hasNext) {\n hammer.on(\"swipeleft\", async function(e) {\n $(\"body\").css({\"transition-timing-function\": \"ease\", \"transition-duration\": \"0.2s\", \"opacity\": \"0\", \"transform\": \"translateX(-150%)\"});\n await Utility.delay(200);\n Post.swipe_next(e);\n });\n }\n}\n\nPost.initialize_edit_dialog = function() {\n $(\"#open-edit-dialog\").show().on(\"click.danbooru\", function(e) {\n Post.open_edit_dialog();\n e.preventDefault();\n });\n}\n\nPost.open_edit_dialog = function() {\n if ($(\"#edit-dialog\").length === 1) {\n return;\n }\n\n $(document).trigger(\"danbooru:open-post-edit-dialog\");\n\n $(\"#edit\").show();\n $(\"#comments\").hide();\n $(\"#post-sections li\").removeClass(\"active\");\n $(\"#post-edit-link\").parent(\"li\").addClass(\"active\");\n $(\".upload-container\").css(\"display\", \"block\");\n\n var $tag_string = $(\"#post_tag_string\");\n $(\"body.c-uploads .docking-menu-tab\").hide();\n\n var dialog = $(\"
    \").attr(\"id\", \"edit-dialog\");\n $(\"#form\").appendTo(dialog);\n dialog.dialog({\n title: \"Edit tags\",\n width: Post.EDIT_DIALOG_WIDTH,\n height: Math.max($(window).height() * 0.50, Post.EDIT_DIALOG_MIN_HEIGHT),\n position: {\n my: \"right top\",\n at: \"right-20 top+20\",\n of: window\n },\n drag: function(e, ui) {\n $tag_string.data(\"uiAutocomplete\").close();\n },\n close: Post.close_edit_dialog\n });\n dialog.dialog(\"widget\").draggable(\"option\", \"containment\", \"none\");\n\n var pin_button = $(\"