rspec-support (3.11.0)
rspec_junit_formatter (0.5.1)
rspec-core (>= 2, < 4, != 2.12.0)
- rubocop (1.28.2)
+ rubocop (1.33.0)
+ json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.1.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
- rexml
- rubocop-ast (>= 1.17.0, < 2.0)
+ rexml (>= 3.2.5, < 4.0)
+ rubocop-ast (>= 1.19.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
- rubocop-ast (1.17.0)
+ rubocop-ast (1.21.0)
parser (>= 3.1.1.0)
- rubocop-performance (1.13.3)
+ rubocop-performance (1.14.3)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
ruby-progressbar (1.11.0)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.21)
+ standard (1.15.0)
+ rubocop (= 1.33.0)
+ rubocop-performance (= 1.14.3)
statsd-ruby (1.5.0)
stoplight (3.0.0)
strong_migrations (0.7.9)
webpacker (~> 5.4)
webpush!
xorcist (~> 1.1)
+
+RUBY VERSION
+ ruby 3.0.4p208
+
+BUNDLED WITH
+ 2.3.21
const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]';
+const showSelectAll = () => {
+ const selectAllMatchingElement = document.querySelector('.batch-table__select-all');
+ selectAllMatchingElement.classList.add('active');
+};
+
+const hideSelectAll = () => {
+ const selectAllMatchingElement = document.querySelector('.batch-table__select-all');
+ const hiddenField = document.querySelector('#select_all_matching');
+ const selectedMsg = document.querySelector('.batch-table__select-all .selected');
+ const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected');
+
+ selectAllMatchingElement.classList.remove('active');
+ selectedMsg.classList.remove('active');
+ notSelectedMsg.classList.add('active');
+ hiddenField.value = '0';
+};
+
delegate(document, '#batch_checkbox_all', 'change', ({ target }) => {
+ const selectAllMatchingElement = document.querySelector('.batch-table__select-all');
+
[].forEach.call(document.querySelectorAll(batchCheckboxClassName), (content) => {
content.checked = target.checked;
});
+
+ if (selectAllMatchingElement) {
+ if (target.checked) {
+ showSelectAll();
+ } else {
+ hideSelectAll();
+ }
+ }
+});
+
+delegate(document, '.batch-table__select-all button', 'click', () => {
+ const hiddenField = document.querySelector('#select_all_matching');
+ const active = hiddenField.value === '1';
+ const selectedMsg = document.querySelector('.batch-table__select-all .selected');
+ const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected');
+
+ if (active) {
+ hiddenField.value = '0';
+ selectedMsg.classList.remove('active');
+ notSelectedMsg.classList.add('active');
+ } else {
+ hiddenField.value = '1';
+ notSelectedMsg.classList.remove('active');
+ selectedMsg.classList.add('active');
+ }
});
delegate(document, batchCheckboxClassName, 'change', () => {
const checkAllElement = document.querySelector('#batch_checkbox_all');
+ const selectAllMatchingElement = document.querySelector('.batch-table__select-all');
if (checkAllElement) {
checkAllElement.checked = [].every.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked);
checkAllElement.indeterminate = !checkAllElement.checked && [].some.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked);
+
+ if (selectAllMatchingElement) {
+ if (checkAllElement.checked) {
+ showSelectAll();
+ } else {
+ hideSelectAll();
+ }
+ }
}
});
-import 'styles/mailer.scss';
+require('../styles/mailer.scss');
+
+require.context('../icons');
font-family: mastodon-font-display;
src:
local('Montserrat'),
- url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
- url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'),
- url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype');
+ url('~fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
+ url('~fonts/montserrat/Montserrat-Regular.woff') format('woff'),
+ url('~fonts/montserrat/Montserrat-Regular.ttf') format('truetype');
font-weight: 400;
font-display: swap;
font-style: normal;
font-family: mastodon-font-display;
src:
local('Montserrat Medium'),
- url('../fonts/montserrat/Montserrat-Medium.ttf') format('truetype');
+ url('~fonts/montserrat/Montserrat-Medium.ttf') format('truetype');
font-weight: 500;
font-display: swap;
font-style: normal;
font-family: mastodon-font-monospace;
src:
local('Roboto Mono'),
- url('../fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'),
- url('../fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'),
- url('../fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'),
- url('../fonts/roboto-mono/robotomono-regular-webfont.svg#roboto_monoregular') format('svg');
+ url('~fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'),
+ url('~fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'),
+ url('~fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'),
+ url('~fonts/roboto-mono/robotomono-regular-webfont.svg#roboto_monoregular') format('svg');
font-weight: 400;
font-display: swap;
font-style: normal;
font-family: mastodon-font-sans-serif;
src:
local('Roboto Italic'),
- url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
- url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'),
- url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
- url('../fonts/roboto/roboto-italic-webfont.svg#roboto-italic-webfont') format('svg');
+ url('~fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
+ url('~fonts/roboto/roboto-italic-webfont.woff') format('woff'),
+ url('~fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
+ url('~fonts/roboto/roboto-italic-webfont.svg#roboto-italic-webfont') format('svg');
font-weight: normal;
font-display: swap;
font-style: italic;
font-family: mastodon-font-sans-serif;
src:
local('Roboto Bold'),
- url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
- url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'),
- url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
- url('../fonts/roboto/roboto-bold-webfont.svg#roboto-bold-webfont') format('svg');
+ url('~fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
+ url('~fonts/roboto/roboto-bold-webfont.woff') format('woff'),
+ url('~fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
+ url('~fonts/roboto/roboto-bold-webfont.svg#roboto-bold-webfont') format('svg');
font-weight: bold;
font-display: swap;
font-style: normal;
font-family: mastodon-font-sans-serif;
src:
local('Roboto Medium'),
- url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
- url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'),
- url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
- url('../fonts/roboto/roboto-medium-webfont.svg#roboto-medium-webfont') format('svg');
+ url('~fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
+ url('~fonts/roboto/roboto-medium-webfont.woff') format('woff'),
+ url('~fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
+ url('~fonts/roboto/roboto-medium-webfont.svg#roboto-medium-webfont') format('svg');
font-weight: 500;
font-display: swap;
font-style: normal;
font-family: mastodon-font-sans-serif;
src:
local('Roboto'),
- url('../fonts/roboto/roboto-regular-webfont.woff2') format('woff2'),
- url('../fonts/roboto/roboto-regular-webfont.woff') format('woff'),
- url('../fonts/roboto/roboto-regular-webfont.ttf') format('truetype'),
- url('../fonts/roboto/roboto-regular-webfont.svg#roboto-regular-webfont') format('svg');
+ url('~fonts/roboto/roboto-regular-webfont.woff2') format('woff2'),
+ url('~fonts/roboto/roboto-regular-webfont.woff') format('woff'),
+ url('~fonts/roboto/roboto-regular-webfont.ttf') format('truetype'),
+ url('~fonts/roboto/roboto-regular-webfont.svg#roboto-regular-webfont') format('svg');
font-weight: normal;
font-display: swap;
font-style: normal;
# Local user validations
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
- validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? will_save_change_to_username? && actor_type != 'Application' }
+ validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
validates :display_name, length: { maximum: MAX_DISPLAY_NAME_LENGTH }, if: -> { local? && will_save_change_to_display_name? }
validates :note, note_length: { maximum: MAX_NOTE_LENGTH }, if: -> { local? && will_save_change_to_note? }
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
private
def eligible?(status)
- status.public_visibility? && status.account.discoverable? && !status.account.silenced? && status.spoiler_text.blank? && !status.sensitive? && !status.reply?
+ status.public_visibility? && status.account.discoverable? && !status.account.silenced? && (status.spoiler_text.blank? || Setting.trending_status_cw) && !status.sensitive? && !status.reply?
end
def calculate_scores(statuses, at_time)
'<rootDir>/log/',
'<rootDir>/public/',
'<rootDir>/tmp/',
+ '<rootDir>/app/javascript/themes/',
],
'setupFiles': [
'raf/polyfill',
dependencies:
reusify "^1.0.4"
+favico.js@^0.3.10:
+ version "0.3.10"
+ resolved "https://registry.yarnpkg.com/favico.js/-/favico.js-0.3.10.tgz#80586e27a117f24a8d51c18a99bdc714d4339301"
+ integrity sha1-gFhuJ6EX8kqNUcGKmb3HFNQzkwE=
+
faye-websocket@^0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"