reflekt 0.9.6 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/Accessor.rb +9 -10
- data/lib/Aggregator.rb +238 -0
- data/lib/Clone.rb +31 -0
- data/lib/Config.rb +41 -0
- data/lib/Control.rb +53 -14
- data/lib/Execution.rb +48 -7
- data/lib/Meta.rb +39 -0
- data/lib/MetaBuilder.rb +83 -0
- data/lib/Reflection.rb +124 -106
- data/lib/Reflekt.rb +120 -96
- data/lib/Renderer.rb +20 -19
- data/lib/Rule.rb +37 -17
- data/lib/RuleSet.rb +66 -42
- data/lib/ShadowStack.rb +9 -21
- data/lib/meta/ArrayMeta.rb +34 -0
- data/lib/meta/BooleanMeta.rb +26 -0
- data/lib/meta/FloatMeta.rb +26 -0
- data/lib/meta/IntegerMeta.rb +26 -0
- data/lib/meta/StringMeta.rb +26 -0
- data/lib/rules/ArrayRule.rb +88 -0
- data/lib/rules/BooleanRule.rb +45 -0
- data/lib/rules/FloatRule.rb +40 -11
- data/lib/rules/IntegerRule.rb +36 -10
- data/lib/rules/StringRule.rb +60 -8
- data/lib/web/README.md +11 -0
- data/lib/web/bundle.js +30 -0
- data/lib/web/gitignore.txt +7 -0
- data/lib/web/index.html +26 -0
- data/lib/web/package-lock.json +1347 -0
- data/lib/web/package.json +26 -0
- data/lib/web/server.js +118 -0
- metadata +26 -11
- data/lib/Ruler.rb +0 -197
- data/lib/web/script.js +0 -8
- data/lib/web/style.css +0 -151
- data/lib/web/template.html.erb +0 -266
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"name": "reflekt-server",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"description": "Serves the UI and writes to the DB.",
|
5
|
+
"main": "server.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
8
|
+
"start": "nodemon server.js"
|
9
|
+
},
|
10
|
+
"repository": {
|
11
|
+
"type": "git",
|
12
|
+
"url": "git+https://github.com/refIekt/reflekt-ui.git"
|
13
|
+
},
|
14
|
+
"author": "Maedi Prichard",
|
15
|
+
"license": "MPL-2.0",
|
16
|
+
"bugs": {
|
17
|
+
"url": "https://github.com/refIekt/reflekt-ui/issues"
|
18
|
+
},
|
19
|
+
"homepage": "https://reflekt.dev",
|
20
|
+
"dependencies": {
|
21
|
+
"express": "^4.17.1"
|
22
|
+
},
|
23
|
+
"devDependencies": {
|
24
|
+
"nodemon": "^2.0.5"
|
25
|
+
}
|
26
|
+
}
|
data/lib/web/server.js
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
const express = require('express')
|
2
|
+
const path = require('path')
|
3
|
+
const vm = require("vm");
|
4
|
+
const fs = require('fs');
|
5
|
+
const app = express();
|
6
|
+
|
7
|
+
// Config.
|
8
|
+
const port = 3001;
|
9
|
+
const db_path = 'db.js';
|
10
|
+
|
11
|
+
// Configure express.
|
12
|
+
app.use(express.json());
|
13
|
+
app.use(express.static('.'));
|
14
|
+
app.use('/dist', express.static('../dist'));
|
15
|
+
|
16
|
+
// Respond with React app.
|
17
|
+
app.get('/', (req, res) => {
|
18
|
+
res.sendFile(path.join(__dirname, 'index.html'))
|
19
|
+
})
|
20
|
+
|
21
|
+
////
|
22
|
+
// READ
|
23
|
+
////
|
24
|
+
|
25
|
+
var load_db = () => {
|
26
|
+
|
27
|
+
const data = fs.readFileSync(db_path);
|
28
|
+
const script = new vm.Script(data);
|
29
|
+
script.runInThisContext();
|
30
|
+
|
31
|
+
return JSON.parse(db);
|
32
|
+
|
33
|
+
}
|
34
|
+
|
35
|
+
////
|
36
|
+
// WRITE
|
37
|
+
////
|
38
|
+
|
39
|
+
var save_db = (db) => {
|
40
|
+
// Save JS file to disk.
|
41
|
+
try {
|
42
|
+
fs.writeFileSync(db_path, 'var db = ' + JSON.stringify(JSON.stringify(db)) + ';');
|
43
|
+
}
|
44
|
+
catch (err) {
|
45
|
+
console.log("ERROR: save_db() failed to save.");
|
46
|
+
console.error(err);
|
47
|
+
}
|
48
|
+
|
49
|
+
}
|
50
|
+
|
51
|
+
////
|
52
|
+
// DELETE.
|
53
|
+
////
|
54
|
+
|
55
|
+
// Handle controls delete request.
|
56
|
+
app.post('/controls/delete', (req, res) => {
|
57
|
+
|
58
|
+
// Get execution ID that controls share.
|
59
|
+
var exe_id = req.body.exe_id;
|
60
|
+
|
61
|
+
// Get database.
|
62
|
+
db = load_db();
|
63
|
+
|
64
|
+
// Delete controls.
|
65
|
+
for (let [index, control] of db.controls.entries()) {
|
66
|
+
if (control.exe_id == exe_id) {
|
67
|
+
console.log("DELETE CONTROL:");
|
68
|
+
console.log(db.controls[index]);
|
69
|
+
db.controls.splice(index, 1);
|
70
|
+
}
|
71
|
+
if (control.base_id != null && control.base_id == exe_id) {
|
72
|
+
console.log("DELETE:");
|
73
|
+
console.log(db.controls[index]);
|
74
|
+
db.controls.splice(index, 1);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
// Save database.
|
79
|
+
save_db(db)
|
80
|
+
|
81
|
+
res.status(200).send({ message: 'ok' });
|
82
|
+
|
83
|
+
})
|
84
|
+
|
85
|
+
// Handle control delete request.
|
86
|
+
app.post('/control/delete', (req, res) => {
|
87
|
+
|
88
|
+
// Get control ID.
|
89
|
+
ref_id = req.body.ref_id;
|
90
|
+
|
91
|
+
// Get database.
|
92
|
+
db = load_db();
|
93
|
+
|
94
|
+
// Delete control.
|
95
|
+
for (let [index, control] of db.controls.entries()) {
|
96
|
+
if (control.r == ref_id) {
|
97
|
+
console.log("DELETE CONTROL:")
|
98
|
+
console.log(db.controls[index]);
|
99
|
+
db.controls.splice(index, 1);
|
100
|
+
break;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
// Save database.
|
105
|
+
save_db(db)
|
106
|
+
|
107
|
+
res.status(200).send({ message: 'ok' });
|
108
|
+
|
109
|
+
})
|
110
|
+
|
111
|
+
////
|
112
|
+
// SERVE
|
113
|
+
////
|
114
|
+
|
115
|
+
// Listen for requests.
|
116
|
+
app.listen(port, () => {
|
117
|
+
console.log(`Example app listening at http://localhost:${port}`)
|
118
|
+
})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reflekt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maedi Prichard
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rowdb
|
@@ -25,32 +25,47 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
description: Testing that's completely automated.
|
28
|
-
email: maediprichard@
|
28
|
+
email: maediprichard@gmail.com
|
29
29
|
executables: []
|
30
30
|
extensions: []
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
33
|
- lib/Accessor.rb
|
34
|
+
- lib/Aggregator.rb
|
35
|
+
- lib/Clone.rb
|
36
|
+
- lib/Config.rb
|
34
37
|
- lib/Control.rb
|
35
38
|
- lib/Execution.rb
|
39
|
+
- lib/Meta.rb
|
40
|
+
- lib/MetaBuilder.rb
|
36
41
|
- lib/Reflection.rb
|
37
42
|
- lib/Reflekt.rb
|
38
43
|
- lib/Renderer.rb
|
39
44
|
- lib/Rule.rb
|
40
45
|
- lib/RuleSet.rb
|
41
|
-
- lib/Ruler.rb
|
42
46
|
- lib/ShadowStack.rb
|
47
|
+
- lib/meta/ArrayMeta.rb
|
48
|
+
- lib/meta/BooleanMeta.rb
|
49
|
+
- lib/meta/FloatMeta.rb
|
50
|
+
- lib/meta/IntegerMeta.rb
|
51
|
+
- lib/meta/StringMeta.rb
|
52
|
+
- lib/rules/ArrayRule.rb
|
53
|
+
- lib/rules/BooleanRule.rb
|
43
54
|
- lib/rules/FloatRule.rb
|
44
55
|
- lib/rules/IntegerRule.rb
|
45
56
|
- lib/rules/StringRule.rb
|
46
|
-
- lib/web/
|
47
|
-
- lib/web/
|
48
|
-
- lib/web/
|
57
|
+
- lib/web/README.md
|
58
|
+
- lib/web/bundle.js
|
59
|
+
- lib/web/gitignore.txt
|
60
|
+
- lib/web/index.html
|
61
|
+
- lib/web/package-lock.json
|
62
|
+
- lib/web/package.json
|
63
|
+
- lib/web/server.js
|
49
64
|
homepage: https://github.com/refIekt/reflekt
|
50
65
|
licenses:
|
51
66
|
- MPL-2.0
|
52
67
|
metadata: {}
|
53
|
-
post_install_message:
|
68
|
+
post_install_message:
|
54
69
|
rdoc_options: []
|
55
70
|
require_paths:
|
56
71
|
- lib
|
@@ -65,8 +80,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
80
|
- !ruby/object:Gem::Version
|
66
81
|
version: '0'
|
67
82
|
requirements: []
|
68
|
-
rubygems_version: 3.
|
69
|
-
signing_key:
|
83
|
+
rubygems_version: 3.1.4
|
84
|
+
signing_key:
|
70
85
|
specification_version: 4
|
71
86
|
summary: Reflective testing.
|
72
87
|
test_files: []
|
data/lib/Ruler.rb
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
################################################################################
|
2
|
-
# RULER
|
3
|
-
#
|
4
|
-
# Aggregates input/output from controls.
|
5
|
-
# Creates and trains RuleSets from aggregated input/output.
|
6
|
-
# Validates reflection input/output against RuleSets.
|
7
|
-
################################################################################
|
8
|
-
|
9
|
-
require 'RuleSet'
|
10
|
-
|
11
|
-
class Ruler
|
12
|
-
|
13
|
-
INPUTS = "i"
|
14
|
-
OUTPUT = "o"
|
15
|
-
TYPE = "T"
|
16
|
-
VALUE = "V"
|
17
|
-
|
18
|
-
def initialize()
|
19
|
-
@rule_sets = {}
|
20
|
-
end
|
21
|
-
|
22
|
-
##
|
23
|
-
# Get input RuleSets.
|
24
|
-
#
|
25
|
-
# @param Symbol klass
|
26
|
-
# @param Symbol method
|
27
|
-
#
|
28
|
-
# @return Array
|
29
|
-
##
|
30
|
-
def get_input_rule_sets(klass, method)
|
31
|
-
return @rule_sets.dig(klass, method, :inputs)
|
32
|
-
end
|
33
|
-
|
34
|
-
##
|
35
|
-
# Get input RuleSet.
|
36
|
-
#
|
37
|
-
# @param Symbol klass
|
38
|
-
# @param Symbol method
|
39
|
-
#
|
40
|
-
# @return RuleSet
|
41
|
-
##
|
42
|
-
def get_input_rule_set(klass, method, arg_num)
|
43
|
-
@rule_sets.dig(klass, method, :inputs, arg_num)
|
44
|
-
end
|
45
|
-
|
46
|
-
##
|
47
|
-
# Get output RuleSet.
|
48
|
-
#
|
49
|
-
# @param Symbol klass
|
50
|
-
# @param Symbol method
|
51
|
-
#
|
52
|
-
# @return RuleSet.
|
53
|
-
##
|
54
|
-
def get_output_rule_set(klass, method)
|
55
|
-
@rule_sets.dig(klass, method, :output)
|
56
|
-
end
|
57
|
-
|
58
|
-
##
|
59
|
-
# Set input RuleSet.
|
60
|
-
#
|
61
|
-
# @param Symbol klass
|
62
|
-
# @param Symbol method
|
63
|
-
##
|
64
|
-
def set_input_rule_set(klass, method, arg_num, rule_set)
|
65
|
-
# Set defaults.
|
66
|
-
@rule_sets[klass] = {} unless @rule_sets.key? klass
|
67
|
-
@rule_sets[klass][method] = {} unless @rule_sets[klass].key? method
|
68
|
-
@rule_sets[klass][method][:inputs] = [] unless @rule_sets[klass][method].key? :inputs
|
69
|
-
# Set value.
|
70
|
-
@rule_sets[klass][method][:inputs][arg_num] = rule_set
|
71
|
-
end
|
72
|
-
|
73
|
-
##
|
74
|
-
# Set output RuleSet.
|
75
|
-
#
|
76
|
-
# @param Symbol klass
|
77
|
-
# @param Symbol method
|
78
|
-
# @param RuleSet rule_set
|
79
|
-
##
|
80
|
-
def set_output_rule_set(klass, method, rule_set)
|
81
|
-
# Set defaults.
|
82
|
-
@rule_sets[klass] = {} unless @rule_sets.key? klass
|
83
|
-
@rule_sets[klass][method] = {} unless @rule_sets[klass].key? method
|
84
|
-
# Set value.
|
85
|
-
@rule_sets[klass][method][:output] = rule_set
|
86
|
-
end
|
87
|
-
|
88
|
-
##
|
89
|
-
# Load RuleSets.
|
90
|
-
#
|
91
|
-
# @param Symbol klass
|
92
|
-
# @param Symbol method
|
93
|
-
# @param Array controls
|
94
|
-
##
|
95
|
-
def load(klass, method, controls)
|
96
|
-
|
97
|
-
# Create a RuleSet for each control's inputs/output.
|
98
|
-
controls.each_with_index do |control, index|
|
99
|
-
|
100
|
-
# Process inputs.
|
101
|
-
control[INPUTS].each_with_index do |input, arg_num|
|
102
|
-
rule_set = get_input_rule_set(klass, method, arg_num)
|
103
|
-
if rule_set.nil?
|
104
|
-
rule_set = RuleSet.new()
|
105
|
-
set_input_rule_set(klass, method, arg_num, rule_set)
|
106
|
-
end
|
107
|
-
rule_set.load(input[TYPE], input[VALUE])
|
108
|
-
end
|
109
|
-
|
110
|
-
# Process output.
|
111
|
-
output_rule_set = get_output_rule_set(klass, method)
|
112
|
-
if output_rule_set.nil?
|
113
|
-
output_rule_set = RuleSet.new()
|
114
|
-
set_output_rule_set(klass, method, output_rule_set)
|
115
|
-
end
|
116
|
-
output_rule_set.load(control[OUTPUT][TYPE], control[OUTPUT][VALUE])
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
|
122
|
-
##
|
123
|
-
# Train RuleSets from controls.
|
124
|
-
#
|
125
|
-
# @param Symbol klass
|
126
|
-
# @param Symbol method
|
127
|
-
##
|
128
|
-
def train(klass, method)
|
129
|
-
|
130
|
-
input_rule_sets = get_input_rule_sets(klass, method)
|
131
|
-
unless input_rule_sets.nil?
|
132
|
-
input_rule_sets.each do |input_rule_set|
|
133
|
-
input_rule_set.train()
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
output_rule_set = get_output_rule_set(klass, method)
|
138
|
-
unless output_rule_set.nil?
|
139
|
-
output_rule_set.train()
|
140
|
-
end
|
141
|
-
|
142
|
-
end
|
143
|
-
|
144
|
-
##
|
145
|
-
# Validate inputs.
|
146
|
-
#
|
147
|
-
# @param Array inputs - The method's arguments.
|
148
|
-
# @param Array input_rule_sets - The RuleSets to validate each input with.
|
149
|
-
##
|
150
|
-
def validate_inputs(inputs, input_rule_sets)
|
151
|
-
|
152
|
-
# Default to a PASS result.
|
153
|
-
result = true
|
154
|
-
|
155
|
-
# Validate each argument against each rule set for that argument.
|
156
|
-
inputs.each_with_index do |input, arg_num|
|
157
|
-
|
158
|
-
unless input_rule_sets[arg_num].nil?
|
159
|
-
|
160
|
-
rule_set = input_rule_sets[arg_num]
|
161
|
-
|
162
|
-
unless rule_set.validate_rule(input)
|
163
|
-
result = false
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
return result
|
170
|
-
|
171
|
-
end
|
172
|
-
|
173
|
-
##
|
174
|
-
# Validate output.
|
175
|
-
#
|
176
|
-
# @param dynamic output - The method's return value.
|
177
|
-
# @param RuleSet output_rule_set - The RuleSet to validate the output with.
|
178
|
-
##
|
179
|
-
def validate_output(output, output_rule_set)
|
180
|
-
|
181
|
-
# Default to a PASS result.
|
182
|
-
result = true
|
183
|
-
|
184
|
-
unless output_rule_set.nil?
|
185
|
-
|
186
|
-
# Validate output RuleSet for that argument.
|
187
|
-
unless output_rule_set.validate_rule(output)
|
188
|
-
result = false
|
189
|
-
end
|
190
|
-
|
191
|
-
end
|
192
|
-
|
193
|
-
return result
|
194
|
-
|
195
|
-
end
|
196
|
-
|
197
|
-
end
|
data/lib/web/script.js
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Minified by jsDelivr using Terser v3.14.1.
|
3
|
-
* Original file: /gh/alpinejs/alpine@2.6.0/dist/alpine.js
|
4
|
-
*
|
5
|
-
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
|
6
|
-
*/
|
7
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Alpine=t()}(this,function(){"use strict";function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function n(n){for(var i=1;i<arguments.length;i++){var r=null!=arguments[i]?arguments[i]:{};i%2?t(Object(r),!0).forEach(function(t){e(n,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))})}return n}function i(e){return Array.from(new Set(e))}function r(){return navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom")}function s(e,t){"template"!==e.tagName.toLowerCase()?console.warn(`Alpine: [${t}] directive should only be added to <template> tags. See https://github.com/alpinejs/alpine#${t}`):1!==e.content.childElementCount&&console.warn(`Alpine: <template> tag with [${t}] encountered with multiple element roots. Make sure <template> only has a single child node.`)}function o(e){return e.toLowerCase().replace(/-(\w)/g,(e,t)=>t.toUpperCase())}function a(e,t){var n;return function(){var i=this,r=arguments;clearTimeout(n),n=setTimeout(function(){n=null,e.apply(i,r)},t)}}function l(e,t,n={}){return"function"==typeof e?e.call(t):new Function(["$data",...Object.keys(n)],`var __alpine_result; with($data) { __alpine_result = ${e} }; return __alpine_result`)(t,...Object.values(n))}const c=/^x-(on|bind|data|text|html|model|if|for|show|cloak|transition|ref|spread)\b/;function u(e){const t=m(e.name);return c.test(t)}function d(e,t,n){let i=Array.from(e.attributes).filter(u).map(f),r=i.filter(e=>"spread"===e.type)[0];if(r){let e=l(r.expression,t.$data);i=i.concat(Object.entries(e).map(([e,t])=>f({name:e,value:t})))}return n?i.filter(e=>e.type===n):function(e){let t=["bind","model","show","catch-all"];return e.sort((e,n)=>{let i=-1===t.indexOf(e.type)?"catch-all":e.type,r=-1===t.indexOf(n.type)?"catch-all":n.type;return t.indexOf(i)-t.indexOf(r)})}(i)}function f({name:e,value:t}){const n=m(e),i=n.match(c),r=n.match(/:([a-zA-Z0-9\-:]+)/),s=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[];return{type:i?i[1]:null,value:r?r[1]:null,modifiers:s.map(e=>e.replace(".","")),expression:t}}function m(e){return e.startsWith("@")?e.replace("@","x-on:"):e.startsWith(":")?e.replace(":","x-bind:"):e}function p(e,t=Boolean){return e.split(" ").filter(t)}const h="in",v="out";function b(e,t,n,i=!1){if(i)return t();if(e.__x_transition&&e.__x_transition.type===h)return;const r=d(e,n,"transition"),s=d(e,n,"show")[0];if(s&&s.modifiers.includes("transition")){let n=s.modifiers;if(n.includes("out")&&!n.includes("in"))return t();const i=n.includes("in")&&n.includes("out");(function(e,t,n){const i={duration:g(t,"duration",150),origin:g(t,"origin","center"),first:{opacity:0,scale:g(t,"scale",95)},second:{opacity:1,scale:100}};x(e,t,n,()=>{},i,h)})(e,n=i?n.filter((e,t)=>t<n.indexOf("out")):n,t)}else r.some(e=>["enter","enter-start","enter-end"].includes(e.value))?function(e,t,n,i){let r=n=>"function"==typeof n?t.evaluateReturnExpression(e,n):n;const s=p(r((n.find(e=>"enter"===e.value)||{expression:""}).expression)),o=p(r((n.find(e=>"enter-start"===e.value)||{expression:""}).expression)),a=p(r((n.find(e=>"enter-end"===e.value)||{expression:""}).expression));_(e,s,o,a,i,()=>{},h)}(e,n,r,t):t()}function y(e,t,n,i=!1){if(i)return t();if(e.__x_transition&&e.__x_transition.type===v)return;const r=d(e,n,"transition"),s=d(e,n,"show")[0];if(s&&s.modifiers.includes("transition")){let n=s.modifiers;if(n.includes("in")&&!n.includes("out"))return t();const i=n.includes("in")&&n.includes("out");(function(e,t,n,i){const r={duration:n?g(t,"duration",150):g(t,"duration",150)/2,origin:g(t,"origin","center"),first:{opacity:1,scale:100},second:{opacity:0,scale:g(t,"scale",95)}};x(e,t,()=>{},i,r,v)})(e,n=i?n.filter((e,t)=>t>n.indexOf("out")):n,i,t)}else r.some(e=>["leave","leave-start","leave-end"].includes(e.value))?function(e,t,n,i){const r=p((n.find(e=>"leave"===e.value)||{expression:""}).expression),s=p((n.find(e=>"leave-start"===e.value)||{expression:""}).expression),o=p((n.find(e=>"leave-end"===e.value)||{expression:""}).expression);_(e,r,s,o,()=>{},i,v)}(e,0,r,t):t()}function g(e,t,n){if(-1===e.indexOf(t))return n;const i=e[e.indexOf(t)+1];if(!i)return n;if("scale"===t&&!E(i))return n;if("duration"===t){let e=i.match(/([0-9]+)ms/);if(e)return e[1]}return"origin"===t&&["top","right","left","center","bottom"].includes(e[e.indexOf(t)+2])?[i,e[e.indexOf(t)+2]].join(" "):i}function x(e,t,n,i,r,s){e.__x_transition&&(cancelAnimationFrame(e.__x_transition.nextFrame),e.__x_transition.callback&&e.__x_transition.callback());const o=e.style.opacity,a=e.style.transform,l=e.style.transformOrigin,c=!t.includes("opacity")&&!t.includes("scale"),u=c||t.includes("opacity"),d=c||t.includes("scale"),f={start(){u&&(e.style.opacity=r.first.opacity),d&&(e.style.transform=`scale(${r.first.scale/100})`)},during(){d&&(e.style.transformOrigin=r.origin),e.style.transitionProperty=[u?"opacity":"",d?"transform":""].join(" ").trim(),e.style.transitionDuration=`${r.duration/1e3}s`,e.style.transitionTimingFunction="cubic-bezier(0.4, 0.0, 0.2, 1)"},show(){n()},end(){u&&(e.style.opacity=r.second.opacity),d&&(e.style.transform=`scale(${r.second.scale/100})`)},hide(){i()},cleanup(){u&&(e.style.opacity=o),d&&(e.style.transform=a),d&&(e.style.transformOrigin=l),e.style.transitionProperty=null,e.style.transitionDuration=null,e.style.transitionTimingFunction=null}};w(e,f,s)}function _(e,t,n,i,r,s,o){e.__x_transition&&(cancelAnimationFrame(e.__x_transition.nextFrame),e.__x_transition.callback&&e.__x_transition.callback());const a=e.__x_original_classes||[],l={start(){e.classList.add(...n)},during(){e.classList.add(...t)},show(){r()},end(){e.classList.remove(...n.filter(e=>!a.includes(e))),e.classList.add(...i)},hide(){s()},cleanup(){e.classList.remove(...t.filter(e=>!a.includes(e))),e.classList.remove(...i.filter(e=>!a.includes(e)))}};w(e,l,o)}function w(e,t,n){e.__x_transition={type:n,callback:O(()=>{t.hide(),e.isConnected&&t.cleanup(),delete e.__x_transition}),nextFrame:null},t.start(),t.during(),e.__x_transition.nextFrame=requestAnimationFrame(()=>{let n=1e3*Number(getComputedStyle(e).transitionDuration.replace(/,.*/,"").replace("s",""));0===n&&(n=1e3*Number(getComputedStyle(e).animationDuration.replace("s",""))),t.show(),e.__x_transition.nextFrame=requestAnimationFrame(()=>{t.end(),setTimeout(e.__x_transition.callback,n)})})}function E(e){return!isNaN(e)}function O(e){let t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}function k(e,t,i,r,o){s(t,"x-for");let a=A("function"==typeof i?e.evaluateReturnExpression(t,i):i),l=function(e,t,n,i){let r=d(t,e,"if")[0];if(r&&!e.evaluateReturnExpression(t,r.expression))return[];return e.evaluateReturnExpression(t,n.items,i)}(e,t,a,o),c=t;l.forEach((i,s)=>{let u=function(e,t,i,r,s){let o=s?n({},s):{};o[e.item]=t,e.index&&(o[e.index]=i);e.collection&&(o[e.collection]=r);return o}(a,i,s,l,o()),f=function(e,t,n,i){let r=d(t,e,"bind").filter(e=>"key"===e.value)[0];return r?e.evaluateReturnExpression(t,r.expression,()=>i):n}(e,t,s,u),m=function(e,t){if(!e)return;if(e.__x_for_key===t)return e;let n=e;for(;n;){if(n.__x_for_key===t)return n.parentElement.insertBefore(n,e);n=!(!n.nextElementSibling||void 0===n.nextElementSibling.__x_for_key)&&n.nextElementSibling}}(c.nextElementSibling,f);m?(delete m.__x_for_key,m.__x_for=u,e.updateElements(m,()=>m.__x_for)):(b(m=function(e,t){let n=document.importNode(e.content,!0);return t.parentElement.insertBefore(n,t.nextElementSibling),t.nextElementSibling}(t,c),()=>{},e,r),m.__x_for=u,e.initializeElements(m,()=>m.__x_for)),(c=m).__x_for_key=f}),function(e,t){var n=!(!e.nextElementSibling||void 0===e.nextElementSibling.__x_for_key)&&e.nextElementSibling;for(;n;){let e=n,i=n.nextElementSibling;y(n,()=>{e.remove()},t),n=!(!i||void 0===i.__x_for_key)&&i}}(c,e)}function A(e){let t=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,n=e.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/);if(!n)return;let i={};i.items=n[2].trim();let r=n[1].trim().replace(/^\(|\)$/g,""),s=r.match(t);return s?(i.item=r.replace(t,"").trim(),i.index=s[1].trim(),s[2]&&(i.collection=s[2].trim())):i.item=r,i}function S(e,t,n,r,s,a,l){var c=e.evaluateReturnExpression(t,r,s);if("value"===n){if(me.ignoreFocusedForValueBinding&&document.activeElement.isSameNode(t))return;if(void 0===c&&r.match(/\./)&&(c=""),"radio"===t.type)void 0===t.attributes.value&&"bind"===a?t.value=c:"bind"!==a&&(t.checked=t.value==c);else if("checkbox"===t.type)"string"==typeof c&&"bind"===a?t.value=c:"bind"!==a&&(Array.isArray(c)?t.checked=c.some(e=>e==t.value):t.checked=!!c);else if("SELECT"===t.tagName)!function(e,t){const n=[].concat(t).map(e=>e+"");Array.from(e.options).forEach(e=>{e.selected=n.includes(e.value||e.text)})}(t,c);else{if(t.value===c)return;t.value=c}}else if("class"===n)if(Array.isArray(c)){const e=t.__x_original_classes||[];t.setAttribute("class",i(e.concat(c)).join(" "))}else if("object"==typeof c){Object.keys(c).sort((e,t)=>c[e]-c[t]).forEach(e=>{c[e]?p(e).forEach(e=>t.classList.add(e)):p(e).forEach(e=>t.classList.remove(e))})}else{const e=t.__x_original_classes||[],n=p(c);t.setAttribute("class",i(e.concat(n)).join(" "))}else n=l.includes("camel")?o(n):n,[null,void 0,!1].includes(c)?t.removeAttribute(n):!function(e){return["disabled","checked","required","readonly","hidden","open","selected","autofocus","itemscope","multiple","novalidate","allowfullscreen","allowpaymentrequest","formnovalidate","autoplay","controls","loop","muted","playsinline","default","ismap","reversed","async","defer","nomodule"].includes(e)}(n)?$(t,n,c):$(t,n,n)}function $(e,t,n){e.getAttribute(t)!=n&&e.setAttribute(t,n)}function P(e,t,n,i,r,s={}){const l={passive:i.includes("passive")};if(i.includes("camel")&&(n=o(n)),i.includes("away")){let o=a=>{t.contains(a.target)||t.offsetWidth<1&&t.offsetHeight<1||(C(e,r,a,s),i.includes("once")&&document.removeEventListener(n,o,l))};document.addEventListener(n,o,l)}else{let o=i.includes("window")?window:i.includes("document")?document:t,c=a=>{if(o!==window&&o!==document||document.body.contains(t)){if(!(function(e){return["keydown","keyup"].includes(e)}(n)&&function(e,t){let n=t.filter(e=>!["window","document","prevent","stop"].includes(e));if(n.includes("debounce")){let e=n.indexOf("debounce");n.splice(e,E((n[e+1]||"invalid-wait").split("ms")[0])?2:1)}if(0===n.length)return!1;if(1===n.length&&n[0]===D(e.key))return!1;const i=["ctrl","shift","alt","meta","cmd","super"].filter(e=>n.includes(e));if(n=n.filter(e=>!i.includes(e)),i.length>0){const t=i.filter(t=>("cmd"!==t&&"super"!==t||(t="meta"),e[`${t}Key`]));if(t.length===i.length&&n[0]===D(e.key))return!1}return!0}(a,i)||(i.includes("prevent")&&a.preventDefault(),i.includes("stop")&&a.stopPropagation(),i.includes("self")&&a.target!==t))){C(e,r,a,s).then(e=>{!1===e?a.preventDefault():i.includes("once")&&o.removeEventListener(n,c,l)})}}else o.removeEventListener(n,c,l)};if(i.includes("debounce")){let e=i[i.indexOf("debounce")+1]||"invalid-wait",t=E(e.split("ms")[0])?Number(e.split("ms")[0]):250;c=a(c,t)}o.addEventListener(n,c,l)}}function C(e,t,i,r){return e.evaluateCommandExpression(i.target,t,()=>n(n({},r()),{},{$event:i}))}function D(e){switch(e){case"/":return"slash";case" ":case"Spacebar":return"space";default:return e&&e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[_\s]/,"-").toLowerCase()}}function j(e,t,n){return"radio"===e.type&&(e.hasAttribute("name")||e.setAttribute("name",n)),(n,i)=>{if(n instanceof CustomEvent&&n.detail)return n.detail;if("checkbox"===e.type){if(Array.isArray(i)){const e=t.includes("number")?T(n.target.value):n.target.value;return n.target.checked?i.concat([e]):i.filter(t=>t!==e)}return n.target.checked}if("select"===e.tagName.toLowerCase()&&e.multiple)return t.includes("number")?Array.from(n.target.selectedOptions).map(e=>{return T(e.value||e.text)}):Array.from(n.target.selectedOptions).map(e=>e.value||e.text);{const e=n.target.value;return t.includes("number")?T(e):t.includes("trim")?e.trim():e}}}function T(e){const t=e?parseFloat(e):null;return E(t)?t:e}const{isArray:L}=Array,{getPrototypeOf:N,create:z,defineProperty:R,defineProperties:F,isExtensible:I,getOwnPropertyDescriptor:M,getOwnPropertyNames:B,getOwnPropertySymbols:U,preventExtensions:q,hasOwnProperty:W}=Object,{push:K,concat:G,map:H}=Array.prototype;function V(e){return void 0===e}function Z(e){return"function"==typeof e}const J=new WeakMap;function Q(e,t){J.set(e,t)}const X=e=>J.get(e)||e;function Y(e,t){return e.valueIsObservable(t)?e.getProxy(t):t}function ee(e,t,n){G.call(B(n),U(n)).forEach(i=>{let r=M(n,i);r.configurable||(r=ue(e,r,Y)),R(t,i,r)}),q(t)}class te{constructor(e,t){this.originalTarget=t,this.membrane=e}get(e,t){const{originalTarget:n,membrane:i}=this,r=n[t],{valueObserved:s}=i;return s(n,t),i.getProxy(r)}set(e,t,n){const{originalTarget:i,membrane:{valueMutated:r}}=this;return i[t]!==n?(i[t]=n,r(i,t)):"length"===t&&L(i)&&r(i,t),!0}deleteProperty(e,t){const{originalTarget:n,membrane:{valueMutated:i}}=this;return delete n[t],i(n,t),!0}apply(e,t,n){}construct(e,t,n){}has(e,t){const{originalTarget:n,membrane:{valueObserved:i}}=this;return i(n,t),t in n}ownKeys(e){const{originalTarget:t}=this;return G.call(B(t),U(t))}isExtensible(e){const t=I(e);if(!t)return t;const{originalTarget:n,membrane:i}=this,r=I(n);return r||ee(i,e,n),r}setPrototypeOf(e,t){}getPrototypeOf(e){const{originalTarget:t}=this;return N(t)}getOwnPropertyDescriptor(e,t){const{originalTarget:n,membrane:i}=this,{valueObserved:r}=this.membrane;r(n,t);let s=M(n,t);if(V(s))return s;const o=M(e,t);return V(o)?((s=ue(i,s,Y)).configurable||R(e,t,s),s):o}preventExtensions(e){const{originalTarget:t,membrane:n}=this;return ee(n,e,t),q(t),!0}defineProperty(e,t,n){const{originalTarget:i,membrane:r}=this,{valueMutated:s}=r,{configurable:o}=n;if(W.call(n,"writable")&&!W.call(n,"value")){const e=M(i,t);n.value=e.value}return R(i,t,function(e){return W.call(e,"value")&&(e.value=X(e.value)),e}(n)),!1===o&&R(e,t,ue(r,n,Y)),s(i,t),!0}}function ne(e,t){return e.valueIsObservable(t)?e.getReadOnlyProxy(t):t}class ie{constructor(e,t){this.originalTarget=t,this.membrane=e}get(e,t){const{membrane:n,originalTarget:i}=this,r=i[t],{valueObserved:s}=n;return s(i,t),n.getReadOnlyProxy(r)}set(e,t,n){return!1}deleteProperty(e,t){return!1}apply(e,t,n){}construct(e,t,n){}has(e,t){const{originalTarget:n,membrane:{valueObserved:i}}=this;return i(n,t),t in n}ownKeys(e){const{originalTarget:t}=this;return G.call(B(t),U(t))}setPrototypeOf(e,t){}getOwnPropertyDescriptor(e,t){const{originalTarget:n,membrane:i}=this,{valueObserved:r}=i;r(n,t);let s=M(n,t);if(V(s))return s;const o=M(e,t);return V(o)?(s=ue(i,s,ne),W.call(s,"set")&&(s.set=void 0),s.configurable||R(e,t,s),s):o}preventExtensions(e){return!1}defineProperty(e,t,n){return!1}}function re(e){let t=void 0;return L(e)?t=[]:"object"==typeof e&&(t={}),t}const se=Object.prototype;function oe(e){if(null===e)return!1;if("object"!=typeof e)return!1;if(L(e))return!0;const t=N(e);return t===se||null===t||null===N(t)}const ae=(e,t)=>{},le=(e,t)=>{},ce=e=>e;function ue(e,t,n){const{set:i,get:r}=t;return W.call(t,"value")?t.value=n(e,t.value):(V(r)||(t.get=function(){return n(e,r.call(X(this)))}),V(i)||(t.set=function(t){i.call(X(this),e.unwrapProxy(t))})),t}class de{constructor(e){if(this.valueDistortion=ce,this.valueMutated=le,this.valueObserved=ae,this.valueIsObservable=oe,this.objectGraph=new WeakMap,!V(e)){const{valueDistortion:t,valueMutated:n,valueObserved:i,valueIsObservable:r}=e;this.valueDistortion=Z(t)?t:ce,this.valueMutated=Z(n)?n:le,this.valueObserved=Z(i)?i:ae,this.valueIsObservable=Z(r)?r:oe}}getProxy(e){const t=X(e),n=this.valueDistortion(t);if(this.valueIsObservable(n)){const i=this.getReactiveState(t,n);return i.readOnly===e?e:i.reactive}return n}getReadOnlyProxy(e){e=X(e);const t=this.valueDistortion(e);return this.valueIsObservable(t)?this.getReactiveState(e,t).readOnly:t}unwrapProxy(e){return X(e)}getReactiveState(e,t){const{objectGraph:n}=this;let i=n.get(t);if(i)return i;const r=this;return i={get reactive(){const n=new te(r,t),i=new Proxy(re(t),n);return Q(i,e),R(this,"reactive",{value:i}),i},get readOnly(){const n=new ie(r,t),i=new Proxy(re(t),n);return Q(i,e),R(this,"readOnly",{value:i}),i}},n.set(t,i),i}}class fe{constructor(e,t=null){this.$el=e;const n=this.$el.getAttribute("x-data"),i=""===n?"{}":n,r=this.$el.getAttribute("x-init");let s={$el:this.$el},o=t?t.$el:this.$el;Object.entries(me.magicProperties).forEach(([e,t])=>{Object.defineProperty(s,`$${e}`,{get:function(){return t(o)}})}),this.unobservedData=t?t.getUnobservedData():l(i,s);let{membrane:a,data:c}=this.wrapDataInObservable(this.unobservedData);var u;this.$data=c,this.membrane=a,this.unobservedData.$el=this.$el,this.unobservedData.$refs=this.getRefsProxy(),this.nextTickStack=[],this.unobservedData.$nextTick=(e=>{this.nextTickStack.push(e)}),this.watchers={},this.unobservedData.$watch=((e,t)=>{this.watchers[e]||(this.watchers[e]=[]),this.watchers[e].push(t)}),Object.entries(me.magicProperties).forEach(([e,t])=>{Object.defineProperty(this.unobservedData,`$${e}`,{get:function(){return t(o)}})}),this.showDirectiveStack=[],this.showDirectiveLastElement,t||me.onBeforeComponentInitializeds.forEach(e=>e(this)),r&&!t&&(this.pauseReactivity=!0,u=this.evaluateReturnExpression(this.$el,r),this.pauseReactivity=!1),this.initializeElements(this.$el),this.listenForNewElementsToInitialize(),"function"==typeof u&&u.call(this.$data),t||setTimeout(()=>{me.onComponentInitializeds.forEach(e=>e(this))},0)}getUnobservedData(){return function(e,t){let n=e.unwrapProxy(t),i={};return Object.keys(n).forEach(e=>{["$el","$refs","$nextTick","$watch"].includes(e)||(i[e]=n[e])}),i}(this.membrane,this.$data)}wrapDataInObservable(e){var t=this;let n=a(function(){t.updateElements(t.$el)},0);return function(e,t){let n=new de({valueMutated(e,n){t(e,n)}});return{data:n.getProxy(e),membrane:n}}(e,(e,i)=>{t.watchers[i]?t.watchers[i].forEach(t=>t(e[i])):Object.keys(t.watchers).filter(e=>e.includes(".")).forEach(n=>{let r=n.split(".");i===r[r.length-1]&&r.reduce((r,s)=>(Object.is(e,r)&&t.watchers[n].forEach(t=>t(e[i])),r[s]),t.getUnobservedData())}),t.pauseReactivity||n()})}walkAndSkipNestedComponents(e,t,n=(()=>{})){!function e(t,n){if(!1===n(t))return;let i=t.firstElementChild;for(;i;)e(i,n),i=i.nextElementSibling}(e,e=>e.hasAttribute("x-data")&&!e.isSameNode(this.$el)?(e.__x||n(e),!1):t(e))}initializeElements(e,t=(()=>{})){this.walkAndSkipNestedComponents(e,e=>void 0===e.__x_for_key&&(void 0===e.__x_inserted_me&&void this.initializeElement(e,t)),e=>{e.__x=new fe(e)}),this.executeAndClearRemainingShowDirectiveStack(),this.executeAndClearNextTickStack(e)}initializeElement(e,t){e.hasAttribute("class")&&d(e,this).length>0&&(e.__x_original_classes=p(e.getAttribute("class"))),this.registerListeners(e,t),this.resolveBoundAttributes(e,!0,t)}updateElements(e,t=(()=>{})){this.walkAndSkipNestedComponents(e,e=>{if(void 0!==e.__x_for_key&&!e.isSameNode(this.$el))return!1;this.updateElement(e,t)},e=>{e.__x=new fe(e)}),this.executeAndClearRemainingShowDirectiveStack(),this.executeAndClearNextTickStack(e)}executeAndClearNextTickStack(e){e===this.$el&&this.nextTickStack.length>0&&requestAnimationFrame(()=>{for(;this.nextTickStack.length>0;)this.nextTickStack.shift()()})}executeAndClearRemainingShowDirectiveStack(){this.showDirectiveStack.reverse().map(e=>new Promise(t=>{e(e=>{t(e)})})).reduce((e,t)=>e.then(()=>t.then(e=>e())),Promise.resolve(()=>{})),this.showDirectiveStack=[],this.showDirectiveLastElement=void 0}updateElement(e,t){this.resolveBoundAttributes(e,!1,t)}registerListeners(e,t){d(e,this).forEach(({type:i,value:r,modifiers:s,expression:o})=>{switch(i){case"on":P(this,e,r,s,o,t);break;case"model":!function(e,t,i,r,s){var o="select"===t.tagName.toLowerCase()||["checkbox","radio"].includes(t.type)||i.includes("lazy")?"change":"input";P(e,t,o,i,`${r} = rightSideOfExpression($event, ${r})`,()=>n(n({},s()),{},{rightSideOfExpression:j(t,i,r)}))}(this,e,s,o,t)}})}resolveBoundAttributes(e,t=!1,n){let i=d(e,this);i.forEach(({type:r,value:o,modifiers:a,expression:l})=>{switch(r){case"model":S(this,e,"value",l,n,r,a);break;case"bind":if("template"===e.tagName.toLowerCase()&&"key"===o)return;S(this,e,o,l,n,r,a);break;case"text":var c=this.evaluateReturnExpression(e,l,n);!function(e,t,n){void 0===t&&n.match(/\./)&&(t=""),e.innerText=t}(e,c,l);break;case"html":!function(e,t,n,i){t.innerHTML=e.evaluateReturnExpression(t,n,i)}(this,e,l,n);break;case"show":c=this.evaluateReturnExpression(e,l,n);!function(e,t,n,i,r=!1){const s=()=>{t.style.display="none"},o=()=>{1===t.style.length&&"none"===t.style.display?t.removeAttribute("style"):t.style.removeProperty("display")};if(!0===r)return void(n?o():s());const a=i=>{n?(("none"===t.style.display||t.__x_transition)&&b(t,()=>{o()},e),i(()=>{})):"none"!==t.style.display?y(t,()=>{i(()=>{s()})},e):i(()=>{})};i.includes("immediate")?a(e=>e()):(e.showDirectiveLastElement&&!e.showDirectiveLastElement.contains(t)&&e.executeAndClearRemainingShowDirectiveStack(),e.showDirectiveStack.push(a),e.showDirectiveLastElement=t)}(this,e,c,a,t);break;case"if":if(i.some(e=>"for"===e.type))return;c=this.evaluateReturnExpression(e,l,n);!function(e,t,n,i,r){s(t,"x-if");const o=t.nextElementSibling&&!0===t.nextElementSibling.__x_inserted_me;if(!n||o&&!t.__x_transition)!n&&o&&y(t.nextElementSibling,()=>{t.nextElementSibling.remove()},e,i);else{const n=document.importNode(t.content,!0);t.parentElement.insertBefore(n,t.nextElementSibling),b(t.nextElementSibling,()=>{},e,i),e.initializeElements(t.nextElementSibling,r),t.nextElementSibling.__x_inserted_me=!0}}(this,e,c,t,n);break;case"for":k(this,e,l,t,n);break;case"cloak":e.removeAttribute("x-cloak")}})}evaluateReturnExpression(e,t,i=(()=>{})){return l(t,this.$data,n(n({},i()),{},{$dispatch:this.getDispatchFunction(e)}))}evaluateCommandExpression(e,t,i=(()=>{})){return function(e,t,n={}){if("function"==typeof e)return Promise.resolve(e.call(t,n.$event));let i=Function;if(i=Object.getPrototypeOf(async function(){}).constructor,Object.keys(t).includes(e)){let i=new Function(["dataContext",...Object.keys(n)],`with(dataContext) { return ${e} }`)(t,...Object.values(n));return"function"==typeof i?Promise.resolve(i.call(t,n.$event)):Promise.resolve()}return Promise.resolve(new i(["dataContext",...Object.keys(n)],`with(dataContext) { ${e} }`)(t,...Object.values(n)))}(t,this.$data,n(n({},i()),{},{$dispatch:this.getDispatchFunction(e)}))}getDispatchFunction(e){return(t,n={})=>{e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0}))}}listenForNewElementsToInitialize(){const e=this.$el;new MutationObserver(e=>{for(let t=0;t<e.length;t++){const n=e[t].target.closest("[x-data]");if(n&&n.isSameNode(this.$el)){if("attributes"===e[t].type&&"x-data"===e[t].attributeName){const n=l(e[t].target.getAttribute("x-data")||"{}",{$el:this.$el});Object.keys(n).forEach(e=>{this.$data[e]!==n[e]&&(this.$data[e]=n[e])})}e[t].addedNodes.length>0&&e[t].addedNodes.forEach(e=>{1!==e.nodeType||e.__x_inserted_me||(!e.matches("[x-data]")||e.__x?this.initializeElements(e):e.__x=new fe(e))})}}}).observe(e,{childList:!0,attributes:!0,subtree:!0})}getRefsProxy(){var e=this;return new Proxy({},{get(t,n){return"$isAlpineProxy"===n||(e.walkAndSkipNestedComponents(e.$el,e=>{e.hasAttribute("x-ref")&&e.getAttribute("x-ref")===n&&(i=e)}),i);var i}})}}const me={version:"2.6.0",pauseMutationObserver:!1,magicProperties:{},onComponentInitializeds:[],onBeforeComponentInitializeds:[],ignoreFocusedForValueBinding:!1,start:async function(){r()||await new Promise(e=>{"loading"==document.readyState?document.addEventListener("DOMContentLoaded",e):e()}),this.discoverComponents(e=>{this.initializeComponent(e)}),document.addEventListener("turbolinks:load",()=>{this.discoverUninitializedComponents(e=>{this.initializeComponent(e)})}),this.listenForNewUninitializedComponentsAtRunTime(e=>{this.initializeComponent(e)})},discoverComponents:function(e){document.querySelectorAll("[x-data]").forEach(t=>{e(t)})},discoverUninitializedComponents:function(e,t=null){const n=(t||document).querySelectorAll("[x-data]");Array.from(n).filter(e=>void 0===e.__x).forEach(t=>{e(t)})},listenForNewUninitializedComponentsAtRunTime:function(e){const t=document.querySelector("body");new MutationObserver(e=>{if(!this.pauseMutationObserver)for(let t=0;t<e.length;t++)e[t].addedNodes.length>0&&e[t].addedNodes.forEach(e=>{1===e.nodeType&&(e.parentElement&&e.parentElement.closest("[x-data]")||this.discoverUninitializedComponents(e=>{this.initializeComponent(e)},e.parentElement))})}).observe(t,{childList:!0,attributes:!0,subtree:!0})},initializeComponent:function(e){if(!e.__x)try{e.__x=new fe(e)}catch(e){setTimeout(()=>{throw e},0)}},clone:function(e,t){t.__x||(t.__x=new fe(t,e))},addMagicProperty:function(e,t){this.magicProperties[e]=t},onComponentInitialized:function(e){this.onComponentInitializeds.push(e)},onBeforeComponentInitialized:function(e){this.onBeforeComponentInitializeds.push(e)}};return r()||(window.Alpine=me,window.deferLoadingAlpine?window.deferLoadingAlpine(function(){window.Alpine.start()}):window.Alpine.start()),me});
|
8
|
-
//# sourceMappingURL=/sm/54d8acf4bec59c2ac38179fad55c741f03c418f9ea483b114454c0827631f4ba.map
|
data/lib/web/style.css
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
/* Layout. */
|
2
|
-
body {
|
3
|
-
padding: 0.5rem;
|
4
|
-
background: #C9D2E6;
|
5
|
-
font-family: 'Roboto', sans-serif;
|
6
|
-
}
|
7
|
-
|
8
|
-
.container {
|
9
|
-
margin: 0 auto;
|
10
|
-
max-width: 1000px;
|
11
|
-
padding: 2rem;
|
12
|
-
background: white;
|
13
|
-
}
|
14
|
-
|
15
|
-
/* Header. */
|
16
|
-
#logo {
|
17
|
-
display: block;
|
18
|
-
margin: 0 auto;
|
19
|
-
max-width: 100px;
|
20
|
-
}
|
21
|
-
|
22
|
-
/* Structure */
|
23
|
-
ul.classes,
|
24
|
-
ul.methods,
|
25
|
-
ul.controls,
|
26
|
-
ul.reflections {
|
27
|
-
padding-left: 0;
|
28
|
-
}
|
29
|
-
|
30
|
-
li.class-container,
|
31
|
-
li.method-container {
|
32
|
-
list-style: none;
|
33
|
-
padding: 1rem;
|
34
|
-
border: 5px solid #dadcdc;
|
35
|
-
}
|
36
|
-
|
37
|
-
/* State. */
|
38
|
-
.status-row {
|
39
|
-
width: 100%;
|
40
|
-
display: flex;
|
41
|
-
align-items: center;
|
42
|
-
flex-direction: row;
|
43
|
-
color: white;
|
44
|
-
background: #A9B6D2;
|
45
|
-
}
|
46
|
-
.status-row.pass {
|
47
|
-
background: #008C32;
|
48
|
-
}
|
49
|
-
.status-row.fail {
|
50
|
-
background: #D04700;
|
51
|
-
}
|
52
|
-
|
53
|
-
/* Buttons. */
|
54
|
-
.method .buttons {
|
55
|
-
margin-left: auto;
|
56
|
-
margin-right: 1rem;
|
57
|
-
}
|
58
|
-
.buttons button {
|
59
|
-
padding: 1rem 2rem;
|
60
|
-
}
|
61
|
-
|
62
|
-
/* Stats. */
|
63
|
-
.class .stats {
|
64
|
-
margin-left: auto;
|
65
|
-
}
|
66
|
-
.stat {
|
67
|
-
color: #efefef;
|
68
|
-
font-size: 3.5rem;
|
69
|
-
font-family: 'Merriweather', serif;
|
70
|
-
}
|
71
|
-
|
72
|
-
/* Class. */
|
73
|
-
.class {
|
74
|
-
padding: 2rem;
|
75
|
-
margin-bottom: 1rem;
|
76
|
-
}
|
77
|
-
.class:hover {
|
78
|
-
cursor: pointer;
|
79
|
-
}
|
80
|
-
.class h2 {
|
81
|
-
margin: 0;
|
82
|
-
}
|
83
|
-
|
84
|
-
/* Method. */
|
85
|
-
.method {
|
86
|
-
padding: 2rem;
|
87
|
-
margin-left: 1rem;
|
88
|
-
margin-bottom: 1rem;
|
89
|
-
}
|
90
|
-
.method:hover {
|
91
|
-
cursor: pointer;
|
92
|
-
}
|
93
|
-
.method .stat {
|
94
|
-
font-size: 2.5rem;
|
95
|
-
}
|
96
|
-
|
97
|
-
/* Reflection. */
|
98
|
-
.control,
|
99
|
-
.reflection {
|
100
|
-
list-style: none;
|
101
|
-
margin-left: 2rem;
|
102
|
-
display: flex;
|
103
|
-
flex-direction: row;
|
104
|
-
align-items: center;
|
105
|
-
background: #EFEFEF;
|
106
|
-
padding: 0.5rem 1.5rem;
|
107
|
-
margin-bottom: 0.3rem;
|
108
|
-
}
|
109
|
-
.control .time,
|
110
|
-
.reflection .time {
|
111
|
-
color: #777777;
|
112
|
-
margin-right: 2rem;
|
113
|
-
}
|
114
|
-
|
115
|
-
.info {
|
116
|
-
display: flex;
|
117
|
-
flex-direction: row;
|
118
|
-
align-items: center;
|
119
|
-
padding: 0.5rem 1rem;
|
120
|
-
border: 1px solid #aaa;
|
121
|
-
border-radius: 5px;
|
122
|
-
}
|
123
|
-
.info:not(:last-child) {
|
124
|
-
margin-right: 0.5rem;
|
125
|
-
}
|
126
|
-
.info h4 {
|
127
|
-
margin: 0;
|
128
|
-
color: #777777;
|
129
|
-
font-size: 1.2rem;
|
130
|
-
font-weight: normal;
|
131
|
-
}
|
132
|
-
|
133
|
-
.info-items {
|
134
|
-
display: flex;
|
135
|
-
flex-direction: row;
|
136
|
-
}
|
137
|
-
.info-item {
|
138
|
-
padding-left: 1rem;
|
139
|
-
padding-right: 1rem;
|
140
|
-
border-right: 1px solid #ccc;
|
141
|
-
}
|
142
|
-
.info-item:last-of-type {
|
143
|
-
padding-right: 0;
|
144
|
-
border-right: 0;
|
145
|
-
}
|
146
|
-
.info-item strong {
|
147
|
-
padding-bottom: 0.1rem;
|
148
|
-
}
|
149
|
-
.info-item pre {
|
150
|
-
margin: 0;
|
151
|
-
}
|