You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
module.exports = class {
|
|
onCreate() {
|
|
this.state = {
|
|
filters: [],
|
|
filtered: false,
|
|
}
|
|
}
|
|
|
|
onInput(input) {
|
|
if (!input.filter) {
|
|
this.state.filters = []
|
|
this.state.filtered = false
|
|
return
|
|
}
|
|
|
|
const filters = []
|
|
const {characters, channels, events, search} = input.filter
|
|
|
|
if (search != null) {
|
|
filters.push({
|
|
type: "search",
|
|
key: "search",
|
|
icon: "T",
|
|
color: "color-text",
|
|
text: search,
|
|
})
|
|
}
|
|
|
|
for (const character of (characters || [])) {
|
|
filters.push({
|
|
type: "characters",
|
|
key: character,
|
|
icon: "C",
|
|
color: "color-tag-character",
|
|
id: character,
|
|
text: (input.characters.find(c => c.id === character) || {name: "Unknown ("+character+")"}).name,
|
|
})
|
|
}
|
|
|
|
for (const channel of (channels || [])) {
|
|
filters.push({
|
|
type: "channels",
|
|
key: channel.replace(/'/g, "__"),
|
|
icon: "#",
|
|
color: "color-tag-location",
|
|
id: channel,
|
|
text: channel,
|
|
})
|
|
}
|
|
|
|
for (const event of (events || [])) {
|
|
filters.push({
|
|
type: "events",
|
|
key: event.replace(/['\s\.]/g, "__"),
|
|
icon: "E",
|
|
color: "color-tag-event",
|
|
id: event,
|
|
text: event,
|
|
})
|
|
}
|
|
|
|
this.state.filters = filters
|
|
this.state.filtered = (filters.length > 0)
|
|
}
|
|
|
|
select(value) {
|
|
this.emit("select", value)
|
|
}
|
|
}
|