[?]絵文字の隙間詰め
by
pacochi
2018-09-18 [2018/09/18 23:25:06]
カスタム絵文字の後ろについているスペースをゼロ幅スペースに変換します。
@@ -4,14 +4,19 @@
// @license MIT License
// @javascript_url
-(t => { if (t) {
+((
+ t = document.querySelector('.compose-form textarea'),
+ b = s => s.replace(/[^\r\n]/g, '')
+) => { if (t) {
// https://github.com/vitalyq/react-trigger-change/blob/v1.0.2/lib/change.js#L135-L140
// が動かなくなったから
// https://github.com/facebook/react/issues/11095
// にした
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), 'value').set
- .call(t, t.value.replace(/\s*(:[\w\-]+:)\s*/g, '\u200C$1\u200C'));
+ .call(t, t.value
+ .replace(/(\s*)(:[-\w]+:)(\s*)/g, (_, p, c, s) => `${b(p)}\u200b${c}\u200b${b(s)}`)
+ .replace(/\u200b+/g, '\u200b'));
t.dispatchEvent(new Event('input', { bubbles: true }));
-}})(document.querySelector('.compose-form textarea'));
+}})();
// @title [?]絵文字の隙間詰め
// @description カスタム絵文字の後ろについているスペースをゼロ幅スペースに変換します。
// @include https://*/web/*
// @license MIT License
// @javascript_url
((
t = document.querySelector('.compose-form textarea'),
b = s => s.replace(/[^\r\n]/g, '')
) => { if (t) {
// https://github.com/vitalyq/react-trigger-change/blob/v1.0.2/lib/change.js#L135-L140
// が動かなくなったから
// https://github.com/facebook/react/issues/11095
// にした
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), 'value').set
.call(t, t.value
.replace(/(\s*)(:[-\w]+:)(\s*)/g, (_, p, c, s) => `${b(p)}\u200b${c}\u200b${b(s)}`)
.replace(/\u200b+/g, '\u200b'));
t.dispatchEvent(new Event('input', { bubbles: true }));
}})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。