Scripts/resources/[standalone]/chat/web/ui.html

107 lines
2.9 KiB
HTML
Raw Normal View History

2024-12-29 20:02:20 +00:00
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<link href="animate.min.css" rel="stylesheet">
<link href="styles.css" rel="stylesheet"></link>
<script src="vue.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Righteous">
</head>
<body>
<div id="app"></div>
<script type="text/x-template" id="app_template">
<div id="app">
<div class="chat-window" :style="this.style" :class="{ 'fadeOutUp animated': !showWindow, 'hidden': shouldHide }">
<div class="chat-messages" ref="messages">
<message v-for="msg in messages"
:templates="templates"
:multiline="msg.multiline"
:args="msg.args"
:color="msg.color"
:template="msg.template"
:template-id="msg.templateId"
:key="msg">
</message>
</div>
</div>
<div class="chat-input" v-show="showInput">
<div>
<!-- <span class="prefix"><i class="fas fa-paper-plane fa-lg"></i></span> -->
<input v-model="message"
ref="input"
type="text"
placeholder="Type a command"
autofocus
spellcheck="false"
@keyup.esc="hideInput"
@keyup="keyUp"
@keydown="keyDown"
@keypress.enter.prevent="send">
</input>
</div>
<suggestions :message="message" :suggestions="suggestions"></suggestions>
</div>
</div>
</script>
<script type="text/x-template" id="message_template">
<div class="msg" :class="{ multiline }">
<span v-html="textEscaped"></span>
</div>
</script>
<script type="text/x-template" id="suggestions_template">
<div class="suggestions-wrap" v-show="currentSuggestions.length > 0">
<ul class="suggestions">
<li class="suggestion" v-for="s in currentSuggestions">
<p>
<span :class="{ 'disabled': s.disabled }">
{{s.name}}
</span>
<span class="param"
v-for="(p, index) in s.params"
:class="{ 'disabled': p.disabled }">
[{{p.name}}]
</span>
</p>
<small class="help">
<template v-if="!s.disabled">
{{s.help}}
</template>
<template v-for="p in s.params" v-if="!p.disabled">
{{p.help}}
</template>
</small>
</li>
</ul>
</div>
</script>
<script src="suggestions.js" type="text/javascript"></script>
<script src="message.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<script type="text/javascript">
window.post = (url, data) => {
var request = new XMLHttpRequest();
request.open('POST', url, true);
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
request.send(data);
}
const instance = new Vue({
el: '#app',
render: h => h(APP),
});
window.emulate = (type, detail = {}) => {
detail.type = type;
window.dispatchEvent(new CustomEvent('message', {
detail,
}));
};
</script>
</body>
</html>