Upgrade linkifyjs to v4
This commit is contained in:
@@ -4,5 +4,5 @@ import { h } from "../node_modules/preact/dist/preact.module.js";
|
||||
import htm from "../node_modules/htm/dist/htm.module.js";
|
||||
export const html = htm.bind(h);
|
||||
|
||||
import * as linkifyjs from "../node_modules/linkifyjs/dist/linkify.module.js";
|
||||
import * as linkifyjs from "../node_modules/linkifyjs/dist/linkify.es.js";
|
||||
export { linkifyjs };
|
||||
|
||||
@@ -5,35 +5,31 @@ linkifyjs.options.defaults.defaultProtocol = "https";
|
||||
linkifyjs.registerCustomProtocol("irc");
|
||||
linkifyjs.registerCustomProtocol("ircs");
|
||||
|
||||
linkifyjs.registerPlugin("ircChannel", ({ scanner, parser, utils }) => {
|
||||
const { POUND, DOMAIN, TLD, LOCALHOST, UNDERSCORE, DOT, HYPHEN } = scanner.tokens;
|
||||
const START_STATE = parser.start;
|
||||
const IRCChannelToken = linkifyjs.createTokenClass("ircChannel", {
|
||||
isLink: true,
|
||||
toHref() {
|
||||
return "irc:///" + this.v;
|
||||
},
|
||||
});
|
||||
|
||||
const Channel = utils.createTokenClass("ircChannel", {
|
||||
isLink: true,
|
||||
toHref() {
|
||||
return "irc:///" + this.toString();
|
||||
},
|
||||
});
|
||||
linkifyjs.registerPlugin("ircChannel", ({ scanner, parser }) => {
|
||||
const { POUND, UNDERSCORE, DOT, HYPHEN } = scanner.tokens;
|
||||
const { alphanumeric } = scanner.tokens.groups;
|
||||
|
||||
const HASH_STATE = START_STATE.tt(POUND);
|
||||
const Prefix = parser.start.tt(POUND);
|
||||
const Channel = new linkifyjs.State(IRCChannelToken);
|
||||
const Divider = Channel.tt(DOT);
|
||||
|
||||
const CHAN_STATE = HASH_STATE.tt(DOMAIN, Channel);
|
||||
HASH_STATE.tt(TLD, CHAN_STATE);
|
||||
HASH_STATE.tt(LOCALHOST, CHAN_STATE);
|
||||
HASH_STATE.tt(POUND, CHAN_STATE);
|
||||
|
||||
CHAN_STATE.tt(UNDERSCORE, CHAN_STATE);
|
||||
CHAN_STATE.tt(DOMAIN, CHAN_STATE);
|
||||
CHAN_STATE.tt(TLD, CHAN_STATE);
|
||||
CHAN_STATE.tt(LOCALHOST, CHAN_STATE);
|
||||
|
||||
const CHAN_DIVIDER_STATE = CHAN_STATE.tt(DOT);
|
||||
|
||||
CHAN_DIVIDER_STATE.tt(UNDERSCORE, CHAN_STATE);
|
||||
CHAN_DIVIDER_STATE.tt(DOMAIN, CHAN_STATE);
|
||||
CHAN_DIVIDER_STATE.tt(TLD, CHAN_STATE);
|
||||
CHAN_DIVIDER_STATE.tt(LOCALHOST, CHAN_STATE);
|
||||
Prefix.ta(alphanumeric, Channel);
|
||||
Prefix.tt(POUND, Channel);
|
||||
Prefix.tt(UNDERSCORE, Channel);
|
||||
Prefix.tt(DOT, Divider);
|
||||
Prefix.tt(HYPHEN, Channel);
|
||||
Channel.ta(alphanumeric, Channel);
|
||||
Channel.tt(POUND, Channel);
|
||||
Channel.tt(UNDERSCORE, Channel);
|
||||
Channel.tt(HYPHEN, Channel);
|
||||
Divider.ta(alphanumeric, Channel);
|
||||
});
|
||||
|
||||
export default function linkify(text, onClick) {
|
||||
|
||||
Reference in New Issue
Block a user