Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
835832c474 |
106 changed files with 17577 additions and 1606 deletions
|
@ -3,7 +3,7 @@
|
|||
"isRoot": true,
|
||||
"tools": {
|
||||
"fable": {
|
||||
"version": "3.7.9",
|
||||
"version": "3.6.2",
|
||||
"commands": [
|
||||
"fable"
|
||||
]
|
||||
|
@ -13,12 +13,6 @@
|
|||
"commands": [
|
||||
"femto"
|
||||
]
|
||||
},
|
||||
"paket": {
|
||||
"version": "7.1.5",
|
||||
"commands": [
|
||||
"paket"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
10
.gitignore
vendored
10
.gitignore
vendored
|
@ -1,13 +1,7 @@
|
|||
public/
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/
|
||||
paket-files/
|
||||
|
||||
public/bundle.js*
|
||||
|
||||
# Node
|
||||
node_modules/
|
||||
.pnpm-store/
|
||||
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
@ -209,4 +203,4 @@ out
|
|||
.vs
|
||||
.ionide
|
||||
*.fs.js
|
||||
*.fs.js.map
|
||||
*.fs.js.map
|
8
.idea/.idea.App/.idea/.gitignore
generated
vendored
8
.idea/.idea.App/.idea/.gitignore
generated
vendored
|
@ -1,11 +1,11 @@
|
|||
# Default ignored files
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/projectSettingsUpdater.xml
|
||||
/modules.xml
|
||||
/contentModel.xml
|
||||
/.idea.App.iml
|
||||
/modules.xml
|
||||
/projectSettingsUpdater.xml
|
||||
/contentModel.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
|
|
1
.idea/.idea.App/.idea/.name
generated
Normal file
1
.idea/.idea.App/.idea/.name
generated
Normal file
|
@ -0,0 +1 @@
|
|||
App
|
8
.idea/.idea.App/.idea/misc.xml
generated
8
.idea/.idea.App/.idea/misc.xml
generated
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SwUserDefinedSpecifications">
|
||||
<option name="specTypeByUrl">
|
||||
<map />
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
160
.idea/.idea.App/.idea/workspace.xml
generated
160
.idea/.idea.App/.idea/workspace.xml
generated
|
@ -1,160 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="b607d823-f52e-4d30-ba30-e8a6839212ac" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.App/.idea/workspace.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/.gitignore" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/.name" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/encodings.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/indexLayout.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/misc.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/.idea.CrosswordFable/.idea/vcs.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.App/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.App/.idea/encodings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.App/.idea/indexLayout.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.App/.idea/misc.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.App/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/App.sln" beforeDir="false" afterPath="$PROJECT_DIR$/CrosswordFable.sln" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="ProjectId" id="28RWab2E1cIinSWuXI5ZZBkGmzE" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}</component>
|
||||
<component name="RunManager" selected="npm.preview">
|
||||
<configuration name="Unnamed" type="ShConfigurationType" nameIsGenerated="true">
|
||||
<option name="SCRIPT_TEXT" value="" />
|
||||
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||
<option name="SCRIPT_PATH" value="" />
|
||||
<option name="SCRIPT_OPTIONS" value="" />
|
||||
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||
<option name="INTERPRETER_PATH" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||
<envs />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="preview" type="js.build_tools.npm" temporary="true" nameIsGenerated="true">
|
||||
<package-json value="$PROJECT_DIR$/package.json" />
|
||||
<command value="run" />
|
||||
<scripts>
|
||||
<script value="preview" />
|
||||
</scripts>
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="start" type="js.build_tools.npm" temporary="true" nameIsGenerated="true">
|
||||
<package-json value="$PROJECT_DIR$/package.json" />
|
||||
<command value="run" />
|
||||
<scripts>
|
||||
<script value="start" />
|
||||
</scripts>
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Docker.Docker Serve" />
|
||||
<item itemvalue="npm.preview" />
|
||||
<item itemvalue="npm.start" />
|
||||
<item itemvalue="Shell Script.Unnamed" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="npm.preview" />
|
||||
<item itemvalue="npm.start" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="b607d823-f52e-4d30-ba30-e8a6839212ac" name="Changes" comment="" />
|
||||
<created>1651179944761</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1651179944761</updated>
|
||||
<workItem from="1651179948633" duration="5585000" />
|
||||
<workItem from="1651185613916" duration="121000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Vite!">
|
||||
<created>1651182679479</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1651182679479</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="Upgrade F# and dotnet">
|
||||
<created>1651183597269</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1651183597269</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="Dockerfile while I'm here">
|
||||
<created>1651185156378</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1651185156378</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="4" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="UnityCheckinConfiguration" checkUnsavedScenes="true" />
|
||||
<component name="UnityUnitTestConfiguration" currentTestLauncher="NUnit" />
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
|
||||
<MESSAGE value="Vite!" />
|
||||
<MESSAGE value="Upgrade F# and dotnet" />
|
||||
<MESSAGE value="Dockerfile while I'm here" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Dockerfile while I'm here" />
|
||||
</component>
|
||||
</project>
|
13
.idea/.idea.CrosswordFable/.idea/.gitignore
generated
vendored
13
.idea/.idea.CrosswordFable/.idea/.gitignore
generated
vendored
|
@ -1,13 +0,0 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/projectSettingsUpdater.xml
|
||||
/modules.xml
|
||||
/contentModel.xml
|
||||
/.idea.App.iml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
1
.idea/.idea.CrosswordFable/.idea/.name
generated
1
.idea/.idea.CrosswordFable/.idea/.name
generated
|
@ -1 +0,0 @@
|
|||
CrosswordFable
|
4
.idea/.idea.CrosswordFable/.idea/encodings.xml
generated
4
.idea/.idea.CrosswordFable/.idea/encodings.xml
generated
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||
</project>
|
8
.idea/.idea.CrosswordFable/.idea/indexLayout.xml
generated
8
.idea/.idea.CrosswordFable/.idea/indexLayout.xml
generated
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
8
.idea/.idea.CrosswordFable/.idea/misc.xml
generated
8
.idea/.idea.CrosswordFable/.idea/misc.xml
generated
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SwUserDefinedSpecifications">
|
||||
<option name="specTypeByUrl">
|
||||
<map />
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
6
.idea/.idea.CrosswordFable/.idea/vcs.xml
generated
6
.idea/.idea.CrosswordFable/.idea/vcs.xml
generated
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
19
.vscode/launch.json
vendored
Normal file
19
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug chrome",
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"url": "http://localhost:8080",
|
||||
"webRoot": "${workspaceFolder}",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**",
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -2,11 +2,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29418.71
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{A215D0C0-3947-42A6-B158-C2BEC1D22CE5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
paket.dependencies = paket.dependencies
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "App", "src\App.fsproj", "{E5DEFC96-37CF-4844-9C9E-CFA0A9A8AED3}"
|
||||
EndProject
|
||||
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests", "tests\Tests.fsproj", "{7821B727-268F-44AD-8136-B300B323F578}"
|
||||
|
@ -20,7 +15,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||
package-lock.json = package-lock.json
|
||||
package.json = package.json
|
||||
README.md = README.md
|
||||
justfile = justfile
|
||||
webpack.common.js = webpack.common.js
|
||||
webpack.config.js = webpack.config.js
|
||||
webpack.tests.js = webpack.tests.js
|
||||
tailwind-process.js = tailwind-process.js
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
|
@ -1,9 +0,0 @@
|
|||
from mcr.microsoft.com/dotnet/sdk:6.0
|
||||
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
|
||||
&& apt install nodejs
|
||||
|
||||
RUN mkdir /just \
|
||||
&& curl -L 'https://github.com/casey/just/releases/download/1.1.2/just-1.1.2-x86_64-unknown-linux-musl.tar.gz' | tar xvz -C /just
|
||||
|
||||
WORKDIR /srv
|
10
NuGet.Config
Normal file
10
NuGet.Config
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear/>
|
||||
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json"/>
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
<clear/>
|
||||
</disabledPackageSources>
|
||||
</configuration>
|
BIN
content/assets/favicon-16x16.png
Normal file
BIN
content/assets/favicon-16x16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 514 B |
BIN
content/assets/favicon-32x32.png
Normal file
BIN
content/assets/favicon-32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1,010 B |
12
content/index.html
Normal file
12
content/index.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>FableTailwind</title>
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="fable.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="feliz-app"></div>
|
||||
</body>
|
||||
</html>
|
549
content/tailwind-generated.css
Normal file
549
content/tailwind-generated.css
Normal file
|
@ -0,0 +1,549 @@
|
|||
/*
|
||||
! tailwindcss v3.0.7 | MIT License | https://tailwindcss.com
|
||||
*/
|
||||
|
||||
/*
|
||||
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
||||
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
||||
*/
|
||||
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
border-width: 0;
|
||||
/* 2 */
|
||||
border-style: solid;
|
||||
/* 2 */
|
||||
border-color: currentColor;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
::before,
|
||||
::after {
|
||||
--tw-content: '';
|
||||
}
|
||||
|
||||
/*
|
||||
1. Use a consistent sensible line-height in all browsers.
|
||||
2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
3. Use a more readable tab size.
|
||||
4. Use the user's configured `sans` font-family by default.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.5;
|
||||
/* 1 */
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* 2 */
|
||||
-moz-tab-size: 4;
|
||||
/* 3 */
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
/* 3 */
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
/* 4 */
|
||||
}
|
||||
|
||||
/*
|
||||
1. Remove the margin in all browsers.
|
||||
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
/* 1 */
|
||||
line-height: inherit;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
1. Add the correct height in Firefox.
|
||||
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
||||
3. Ensure horizontal rules are visible by default.
|
||||
*/
|
||||
|
||||
hr {
|
||||
height: 0;
|
||||
/* 1 */
|
||||
color: inherit;
|
||||
/* 2 */
|
||||
border-top-width: 1px;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
Add the correct text decoration in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
Remove the default font size and weight for headings.
|
||||
*/
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: inherit;
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
/*
|
||||
Reset links to optimize for opt-in styling instead of opt-out.
|
||||
*/
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
|
||||
/*
|
||||
Add the correct font weight in Edge and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Use the user's configured `mono` font family by default.
|
||||
2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp,
|
||||
pre {
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/*
|
||||
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
||||
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
||||
3. Remove gaps between table borders by default.
|
||||
*/
|
||||
|
||||
table {
|
||||
text-indent: 0;
|
||||
/* 1 */
|
||||
border-color: inherit;
|
||||
/* 2 */
|
||||
border-collapse: collapse;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
1. Change the font styles in all browsers.
|
||||
2. Remove the margin in Firefox and Safari.
|
||||
3. Remove default padding in all browsers.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
/* 1 */
|
||||
font-size: 100%;
|
||||
/* 1 */
|
||||
line-height: inherit;
|
||||
/* 1 */
|
||||
color: inherit;
|
||||
/* 1 */
|
||||
margin: 0;
|
||||
/* 2 */
|
||||
padding: 0;
|
||||
/* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
Remove the inheritance of text transform in Edge and Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Correct the inability to style clickable types in iOS and Safari.
|
||||
2. Remove default button styles.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type='button'],
|
||||
[type='reset'],
|
||||
[type='submit'] {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
background-color: transparent;
|
||||
/* 2 */
|
||||
background-image: none;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Use the modern Firefox focus style for all focusable elements.
|
||||
*/
|
||||
|
||||
:-moz-focusring {
|
||||
outline: auto;
|
||||
}
|
||||
|
||||
/*
|
||||
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
||||
*/
|
||||
|
||||
:-moz-ui-invalid {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/*
|
||||
Add the correct vertical alignment in Chrome and Firefox.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/*
|
||||
Correct the cursor style of increment and decrement buttons in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-inner-spin-button,
|
||||
::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Correct the odd appearance in Chrome and Safari.
|
||||
2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type='search'] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
outline-offset: -2px;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Correct the inability to style clickable types in iOS and Safari.
|
||||
2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
font: inherit;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Add the correct display in Chrome and Safari.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/*
|
||||
Removes the default spacing and border for appropriate elements.
|
||||
*/
|
||||
|
||||
blockquote,
|
||||
dl,
|
||||
dd,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
hr,
|
||||
figure,
|
||||
p,
|
||||
pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
menu {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Prevent resizing textareas horizontally by default.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
||||
2. Set the default placeholder color to the user's configured gray 400 color.
|
||||
*/
|
||||
|
||||
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
|
||||
opacity: 1;
|
||||
/* 1 */
|
||||
color: #9ca3af;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
|
||||
opacity: 1;
|
||||
/* 1 */
|
||||
color: #9ca3af;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
input::placeholder,
|
||||
textarea::placeholder {
|
||||
opacity: 1;
|
||||
/* 1 */
|
||||
color: #9ca3af;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Set the default cursor for buttons.
|
||||
*/
|
||||
|
||||
button,
|
||||
[role="button"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*
|
||||
Make sure disabled buttons don't get the pointer cursor.
|
||||
*/
|
||||
|
||||
:disabled {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
||||
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
||||
This can trigger a poorly considered lint error in some tools but is included by design.
|
||||
*/
|
||||
|
||||
img,
|
||||
svg,
|
||||
video,
|
||||
canvas,
|
||||
audio,
|
||||
iframe,
|
||||
embed,
|
||||
object {
|
||||
display: block;
|
||||
/* 1 */
|
||||
vertical-align: middle;
|
||||
/* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
||||
*/
|
||||
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/*
|
||||
Ensure the default browser behavior of the `hidden` attribute.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
*, ::before, ::after {
|
||||
--tw-translate-x: 0;
|
||||
--tw-translate-y: 0;
|
||||
--tw-rotate: 0;
|
||||
--tw-skew-x: 0;
|
||||
--tw-skew-y: 0;
|
||||
--tw-scale-x: 1;
|
||||
--tw-scale-y: 1;
|
||||
--tw-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-ring-offset-width: 0px;
|
||||
--tw-ring-offset-color: #fff;
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||
--tw-ring-offset-shadow: 0 0 #0000;
|
||||
--tw-ring-shadow: 0 0 #0000;
|
||||
--tw-shadow: 0 0 #0000;
|
||||
--tw-shadow-colored: 0 0 #0000;
|
||||
--tw-blur: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-invert: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.container {
|
||||
max-width: 640px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 768px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.container {
|
||||
max-width: 1024px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1280px) {
|
||||
.container {
|
||||
max-width: 1280px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1536px) {
|
||||
.container {
|
||||
max-width: 1536px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Custom component classes: https://tailwindcss.com/docs/extracting-components/#extracting-css-components-with-apply */
|
||||
|
||||
.static {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.fixed {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.inline {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.table {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.contents {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.transform {
|
||||
-webkit-transform: var(--tw-transform);
|
||||
transform: var(--tw-transform);
|
||||
}
|
||||
|
||||
.truncate {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.\!truncate {
|
||||
overflow: hidden !important;
|
||||
text-overflow: ellipsis !important;
|
||||
white-space: nowrap !important;
|
||||
}
|
||||
|
||||
.rounded {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.ring {
|
||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
||||
}
|
||||
|
||||
.filter {
|
||||
-webkit-filter: var(--tw-filter);
|
||||
filter: var(--tw-filter);
|
||||
}
|
21
content/tailwind-source.css
Normal file
21
content/tailwind-source.css
Normal file
|
@ -0,0 +1,21 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer components {
|
||||
|
||||
/* Custom component classes: https://tailwindcss.com/docs/extracting-components/#extracting-css-components-with-apply */
|
||||
|
||||
.custom-blue-button {
|
||||
@apply bg-blue-500 text-white text-lg font-bold py-02 px-04 rounded-full border-2 border-blue-500
|
||||
}
|
||||
|
||||
.custom-blue-button:hover {
|
||||
@apply bg-blue-700
|
||||
}
|
||||
|
||||
.custom-blue-button:focus {
|
||||
@apply outline-none border-blue-700
|
||||
}
|
||||
|
||||
}
|
2
dist/app.fa3660d8700d99b79340.js
vendored
Normal file
2
dist/app.fa3660d8700d99b79340.js
vendored
Normal file
File diff suppressed because one or more lines are too long
32
dist/app.fa3660d8700d99b79340.js.LICENSE.txt
vendored
Normal file
32
dist/app.fa3660d8700d99b79340.js.LICENSE.txt
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/** @license React v0.20.1
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.1
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.1
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
2
dist/app.feafe89237f721f4101d.js
vendored
Normal file
2
dist/app.feafe89237f721f4101d.js
vendored
Normal file
File diff suppressed because one or more lines are too long
32
dist/app.feafe89237f721f4101d.js.LICENSE.txt
vendored
Normal file
32
dist/app.feafe89237f721f4101d.js.LICENSE.txt
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/** @license React v0.20.1
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.1
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** @license React v17.0.1
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
BIN
dist/favicon-16x16.png
vendored
Normal file
BIN
dist/favicon-16x16.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 514 B |
BIN
dist/favicon-32x32.png
vendored
Normal file
BIN
dist/favicon-32x32.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1,010 B |
1
dist/index.html
vendored
Normal file
1
dist/index.html
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
<!doctype html><html><head><title>FableTailwind</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="shortcut icon" href="fable.ico"/><script defer="defer" src="app.feafe89237f721f4101d.js"></script><link href="style.875744d132de81b1b971.css" rel="stylesheet"></head><body><div id="feliz-app"></div></body></html>
|
1
dist/style.0611ff27d83c1f550250.css
vendored
Normal file
1
dist/style.0611ff27d83c1f550250.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/style.875744d132de81b1b971.css
vendored
Normal file
1
dist/style.875744d132de81b1b971.css
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*,:after,:before{border:0 solid;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inline{display:inline}.table{display:table}.contents{display:contents}.transform{-webkit-transform:var(--tw-transform);transform:var(--tw-transform)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.rounded{border-radius:.25rem}.filter{-webkit-filter:var(--tw-filter);filter:var(--tw-filter)}
|
41
dist/tests/Tests.js
vendored
Normal file
41
dist/tests/Tests.js
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
import { Mocha_runTests, Test_testCase, Test_testList } from "./fable_modules/Fable.Mocha.2.9.1/Mocha.fs.js";
|
||||
import { int32ToString, structuralHash, assertEqual } from "./fable_modules/fable-library.3.6.2/Util.js";
|
||||
import { singleton, ofArray, contains } from "./fable_modules/fable-library.3.6.2/List.js";
|
||||
import { equals, class_type, string_type, float64_type, bool_type, int32_type } from "./fable_modules/fable-library.3.6.2/Reflection.js";
|
||||
import { printf, toText } from "./fable_modules/fable-library.3.6.2/String.js";
|
||||
|
||||
export function add(x, y) {
|
||||
return x + y;
|
||||
}
|
||||
|
||||
export const appTests = Test_testList("App tests", singleton(Test_testCase("add works", () => {
|
||||
let copyOfStruct;
|
||||
const actual = add(2, 3) | 0;
|
||||
const expected = 5;
|
||||
const msg = "Result must be 5";
|
||||
if ((actual === expected) ? true : (!(new Function("try {return this===window;}catch(e){ return false;}"))())) {
|
||||
assertEqual(actual, expected, msg);
|
||||
}
|
||||
else {
|
||||
let errorMsg;
|
||||
if (contains((copyOfStruct = actual, int32_type), ofArray([int32_type, bool_type, float64_type, string_type, class_type("System.Decimal"), class_type("System.Guid")]), {
|
||||
Equals: (x, y) => equals(x, y),
|
||||
GetHashCode: (x) => structuralHash(x),
|
||||
})) {
|
||||
const arg20 = int32ToString(actual);
|
||||
const arg10 = int32ToString(expected);
|
||||
errorMsg = toText(printf("\u003cspan style=\u0027color:black\u0027\u003eExpected:\u003c/span\u003e \u003cbr /\u003e\u003cdiv style=\u0027margin-left:20px; color:crimson\u0027\u003e%s\u003c/div\u003e\u003cbr /\u003e\u003cspan style=\u0027color:black\u0027\u003eActual:\u003c/span\u003e \u003c/br \u003e\u003cdiv style=\u0027margin-left:20px;color:crimson\u0027\u003e%s\u003c/div\u003e\u003cbr /\u003e\u003cspan style=\u0027color:black\u0027\u003eMessage:\u003c/span\u003e \u003c/br \u003e\u003cdiv style=\u0027margin-left:20px; color:crimson\u0027\u003e%s\u003c/div\u003e"))(arg10)(arg20)(msg);
|
||||
}
|
||||
else {
|
||||
errorMsg = toText(printf("\u003cspan style=\u0027color:black\u0027\u003eExpected:\u003c/span\u003e \u003cbr /\u003e\u003cdiv style=\u0027margin-left:20px; color:crimson\u0027\u003e%A\u003c/div\u003e\u003cbr /\u003e\u003cspan style=\u0027color:black\u0027\u003eActual:\u003c/span\u003e \u003c/br \u003e\u003cdiv style=\u0027margin-left:20px;color:crimson\u0027\u003e%A\u003c/div\u003e\u003cbr /\u003e\u003cspan style=\u0027color:black\u0027\u003eMessage:\u003c/span\u003e \u003c/br \u003e\u003cdiv style=\u0027margin-left:20px; color:crimson\u0027\u003e%s\u003c/div\u003e"))(expected)(actual)(msg);
|
||||
}
|
||||
throw (new Error(errorMsg));
|
||||
}
|
||||
})));
|
||||
|
||||
export const allTests = Test_testList("All", singleton(appTests));
|
||||
|
||||
(function (args) {
|
||||
return Mocha_runTests(allTests);
|
||||
})(typeof process === 'object' ? process.argv.slice(2) : []);
|
||||
|
18
dist/tests/src/Actions.js
vendored
Normal file
18
dist/tests/src/Actions.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
import { Union } from "../fable_modules/fable-library.3.6.2/Types.js";
|
||||
import { union_type, class_type } from "../fable_modules/fable-library.3.6.2/Reflection.js";
|
||||
|
||||
export class Msg extends Union {
|
||||
constructor(tag, ...fields) {
|
||||
super();
|
||||
this.tag = (tag | 0);
|
||||
this.fields = fields;
|
||||
}
|
||||
cases() {
|
||||
return ["ChangeDate"];
|
||||
}
|
||||
}
|
||||
|
||||
export function Msg$reflection() {
|
||||
return union_type("App.Actions.Msg", [], Msg, () => [[["Item", class_type("System.DateTime")]]]);
|
||||
}
|
||||
|
48
dist/tests/src/Container.js
vendored
Normal file
48
dist/tests/src/Container.js
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
import { Record } from "../fable_modules/fable-library.3.6.2/Types.js";
|
||||
import { record_type, class_type } from "../fable_modules/fable-library.3.6.2/Reflection.js";
|
||||
import { now } from "../fable_modules/fable-library.3.6.2/Date.js";
|
||||
import { useReact_useReducer_2B9E6EA0 } from "../fable_modules/Feliz.1.57.0/React.fs.js";
|
||||
import { createElement } from "react";
|
||||
import { DatePicker } from "./DatePicker.js";
|
||||
import { UserEntry } from "./UserEntry.js";
|
||||
import { ofArray } from "../fable_modules/fable-library.3.6.2/List.js";
|
||||
import { Interop_reactApi } from "../fable_modules/Feliz.1.57.0/Interop.fs.js";
|
||||
|
||||
export class State extends Record {
|
||||
constructor(Date$) {
|
||||
super();
|
||||
this.Date = Date$;
|
||||
}
|
||||
}
|
||||
|
||||
export function State$reflection() {
|
||||
return record_type("App.Container.State", [], State, () => [["Date", class_type("System.DateTime")]]);
|
||||
}
|
||||
|
||||
export const initialState = new State(now());
|
||||
|
||||
export function update(state, _arg1) {
|
||||
return new State(_arg1.fields[0]);
|
||||
}
|
||||
|
||||
export function Container() {
|
||||
let children;
|
||||
const patternInput = useReact_useReducer_2B9E6EA0((state, _arg1) => update(state, _arg1), initialState);
|
||||
const state_1 = patternInput[0];
|
||||
const children_2 = ofArray([createElement(DatePicker, {
|
||||
currentDate: state_1.Date,
|
||||
updateDate: patternInput[1],
|
||||
}), (children = ofArray([createElement(UserEntry, {
|
||||
username: "a_mae_zing",
|
||||
currentDate: state_1.Date,
|
||||
}), createElement(UserEntry, {
|
||||
username: "Anthony",
|
||||
currentDate: state_1.Date,
|
||||
})]), createElement("ol", {
|
||||
children: Interop_reactApi.Children.toArray(Array.from(children)),
|
||||
}))]);
|
||||
return createElement("div", {
|
||||
children: Interop_reactApi.Children.toArray(Array.from(children_2)),
|
||||
});
|
||||
}
|
||||
|
20
dist/tests/src/DatePicker.js
vendored
Normal file
20
dist/tests/src/DatePicker.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { createElement } from "react";
|
||||
import { createObj } from "../fable_modules/fable-library.3.6.2/Util.js";
|
||||
import { toString } from "../fable_modules/fable-library.3.6.2/Date.js";
|
||||
import { iterate } from "../fable_modules/fable-library.3.6.2/Seq.js";
|
||||
import { Msg } from "./Actions.js";
|
||||
import { toArray } from "../fable_modules/fable-library.3.6.2/Option.js";
|
||||
import { DateParsing_parse } from "../fable_modules/Feliz.1.57.0/Interop.fs.js";
|
||||
import { ofArray } from "../fable_modules/fable-library.3.6.2/List.js";
|
||||
|
||||
export function DatePicker(datePickerInputProps) {
|
||||
let value_2;
|
||||
const updateDate = datePickerInputProps.updateDate;
|
||||
const currentDate = datePickerInputProps.currentDate;
|
||||
return createElement("input", createObj(ofArray([["type", "date"], (value_2 = currentDate, ["value", toString(value_2, "yyyy-MM-dd")]), ["onChange", (ev) => {
|
||||
iterate((newValue) => {
|
||||
updateDate(new Msg(0, newValue));
|
||||
}, toArray(DateParsing_parse(ev.target.value)));
|
||||
}]])));
|
||||
}
|
||||
|
12
dist/tests/src/Extensions.js
vendored
Normal file
12
dist/tests/src/Extensions.js
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { isNullOrWhiteSpace } from "../fable_modules/fable-library.3.6.2/String.js";
|
||||
|
||||
export function Config_variableOrDefault(key, defaultValue) {
|
||||
const foundValue = process.env[key] ? process.env[key] : '';
|
||||
if (isNullOrWhiteSpace(foundValue)) {
|
||||
return defaultValue;
|
||||
}
|
||||
else {
|
||||
return foundValue;
|
||||
}
|
||||
}
|
||||
|
6
dist/tests/src/Main.js
vendored
Normal file
6
dist/tests/src/Main.js
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
import { render } from "react-dom";
|
||||
import { createElement } from "react";
|
||||
import { Container } from "./Container.js";
|
||||
|
||||
render(createElement(Container, null), document.getElementById("feliz-app"));
|
||||
|
81
dist/tests/src/UserEntry.js
vendored
Normal file
81
dist/tests/src/UserEntry.js
vendored
Normal file
|
@ -0,0 +1,81 @@
|
|||
import { Record, Union } from "../fable_modules/fable-library.3.6.2/Types.js";
|
||||
import { list_type, record_type, union_type, string_type } from "../fable_modules/fable-library.3.6.2/Reflection.js";
|
||||
import { empty, tryFind } from "../fable_modules/fable-library.3.6.2/List.js";
|
||||
import { useReact_useEffect_3A5B6456, useFeliz_React__React_useState_Static_1505 } from "../fable_modules/Feliz.1.57.0/React.fs.js";
|
||||
import { join, toConsole } from "../fable_modules/fable-library.3.6.2/String.js";
|
||||
import { fetch$ } from "../fable_modules/Fable.Fetch.2.4.0/Fetch.fs.js";
|
||||
import { format as format_1 } from "date-fns";
|
||||
import { Auto_generateBoxedDecoder_79988AEF, fromString } from "../fable_modules/Thoth.Json.6.0.0/Decode.fs.js";
|
||||
import { uncurry } from "../fable_modules/fable-library.3.6.2/Util.js";
|
||||
import { CaseStrategy } from "../fable_modules/Thoth.Json.6.0.0/Types.fs.js";
|
||||
import { createElement } from "react";
|
||||
import { Interop_reactApi } from "../fable_modules/Feliz.1.57.0/Interop.fs.js";
|
||||
|
||||
export class State extends Union {
|
||||
constructor(tag, ...fields) {
|
||||
super();
|
||||
this.tag = (tag | 0);
|
||||
this.fields = fields;
|
||||
}
|
||||
cases() {
|
||||
return ["LoadingScore", "ErrorFetchingScore", "LoadedScore", "NoScore"];
|
||||
}
|
||||
}
|
||||
|
||||
export function State$reflection() {
|
||||
return union_type("UserEntry.State", [], State, () => [[], [], [["Item", string_type]], []]);
|
||||
}
|
||||
|
||||
export class Score extends Record {
|
||||
constructor(Name, Time) {
|
||||
super();
|
||||
this.Name = Name;
|
||||
this.Time = Time;
|
||||
}
|
||||
}
|
||||
|
||||
export function Score$reflection() {
|
||||
return record_type("UserEntry.Score", [], Score, () => [["Name", string_type], ["Time", string_type]]);
|
||||
}
|
||||
|
||||
export function GetUserScore(scores, username) {
|
||||
const _arg1 = tryFind((u) => (u.Name === username), scores);
|
||||
if (_arg1 == null) {
|
||||
return new State(3);
|
||||
}
|
||||
else {
|
||||
return new State(2, _arg1.Time);
|
||||
}
|
||||
}
|
||||
|
||||
export function UserEntry(userEntryInputProps) {
|
||||
const currentDate = userEntryInputProps.currentDate;
|
||||
const username = userEntryInputProps.username;
|
||||
const patternInput = useFeliz_React__React_useState_Static_1505(new State(0));
|
||||
const setScore = patternInput[1];
|
||||
const score = patternInput[0];
|
||||
[useReact_useEffect_3A5B6456(() => {
|
||||
let pr_1, pr;
|
||||
toConsole(`Current Date == ${currentDate}`);
|
||||
(pr_1 = ((pr = fetch$(`https://acicchetti.dev/crossword/v1/${format_1(currentDate, "yyyy-MM-dd")}`, empty()), pr.then((res) => res.text()))), pr_1.then((txt) => {
|
||||
const decoded = fromString(uncurry(2, Auto_generateBoxedDecoder_79988AEF(list_type(Score$reflection()), new CaseStrategy(1), void 0)), txt);
|
||||
if (decoded.tag === 1) {
|
||||
setScore(new State(1));
|
||||
}
|
||||
else {
|
||||
const apiResponse = decoded.fields[0];
|
||||
toConsole(`got ${apiResponse}`);
|
||||
setScore(GetUserScore(apiResponse, username));
|
||||
}
|
||||
}));
|
||||
}), [currentDate]];
|
||||
return createElement("div", {
|
||||
className: join(" ", [(() => {
|
||||
throw 1;
|
||||
})()]),
|
||||
children: Interop_reactApi.Children.toArray([createElement("div", {
|
||||
children: `${username} - ${((score.tag === 1) ? "Error Fetching Score" : ((score.tag === 2) ? score.fields[0] : ((score.tag === 3) ? "No Score" : "Loading")))}`,
|
||||
})]),
|
||||
});
|
||||
}
|
||||
|
5
femto/.store/femto/0.12.0/femto/0.12.0/.nupkg.metadata
Normal file
5
femto/.store/femto/0.12.0/femto/0.12.0/.nupkg.metadata
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": 2,
|
||||
"contentHash": "nM/hj3QIZxMP8fTIACpwSE4skIEW8zafTstiy8ZxDd7e3tOIgFU9vhy2//n+RNyDf/7T2FlFS8lb4YnZ3a+Ajw==",
|
||||
"source": "https://api.nuget.org/v3/index.json"
|
||||
}
|
BIN
femto/.store/femto/0.12.0/femto/0.12.0/.signature.p7s
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/.signature.p7s
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/femto.0.12.0.nupkg
Normal file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/femto.0.12.0.nupkg
Normal file
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
kpH/fx1hF7aVj0GIl0Q0wlVhB1RVqVgDBEn6yv7hkonFjzWULRa5pf4hEbDQbWVSiEHhB8SHLANrh8YpiPKshw==
|
13
femto/.store/femto/0.12.0/femto/0.12.0/femto.nuspec
Executable file
13
femto/.store/femto/0.12.0/femto/0.12.0/femto.nuspec
Executable file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Femto</id>
|
||||
<version>0.12.0</version>
|
||||
<authors>Femto</authors>
|
||||
<description>Package Description</description>
|
||||
<releaseNotes>Add support for pnpm</releaseNotes>
|
||||
<packageTypes>
|
||||
<packageType name="DotnetTool" />
|
||||
</packageTypes>
|
||||
</metadata>
|
||||
</package>
|
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Argu.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Argu.dll
Executable file
Binary file not shown.
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Dotnet.ProjInfo.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Dotnet.ProjInfo.dll
Executable file
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<DotNetCliTool Version="1">
|
||||
<Commands>
|
||||
<Command Name="femto" EntryPoint="Femto.dll" Runner="dotnet" />
|
||||
</Commands>
|
||||
</DotNetCliTool>
|
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/FSharp.Core.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/FSharp.Core.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fable.Core.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fable.Core.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Context.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Context.dll
Executable file
Binary file not shown.
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.FakeVar.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.FakeVar.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Process.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Process.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.String.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.String.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Trace.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.Core.Trace.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.IO.FileSystem.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Fake.IO.FileSystem.dll
Executable file
Binary file not shown.
1295
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Femto.deps.json
Executable file
1295
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Femto.deps.json
Executable file
File diff suppressed because it is too large
Load diff
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Femto.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Femto.dll
Executable file
Binary file not shown.
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net5.0",
|
||||
"rollForward": "Major",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "5.0.0"
|
||||
}
|
||||
}
|
||||
}
|
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Newtonsoft.Json.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Newtonsoft.Json.dll
Executable file
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/SemVer.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/SemVer.dll
Executable file
Binary file not shown.
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Serilog.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Serilog.dll
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Thoth.Json.Net.dll
Executable file
BIN
femto/.store/femto/0.12.0/femto/0.12.0/tools/net5.0/any/Thoth.Json.Net.dll
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
176
femto/.store/femto/0.12.0/project.assets.json
Normal file
176
femto/.store/femto/0.12.0/project.assets.json
Normal file
|
@ -0,0 +1,176 @@
|
|||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net6.0": {
|
||||
"Femto/0.12.0": {
|
||||
"type": "package"
|
||||
}
|
||||
},
|
||||
"net6.0/any": {
|
||||
"Femto/0.12.0": {
|
||||
"type": "package",
|
||||
"tools": {
|
||||
"tools/net5.0/any/Argu.dll": {},
|
||||
"tools/net5.0/any/Dotnet.ProjInfo.Helpers.dll": {},
|
||||
"tools/net5.0/any/Dotnet.ProjInfo.dll": {},
|
||||
"tools/net5.0/any/DotnetToolSettings.xml": {},
|
||||
"tools/net5.0/any/FSharp.Compiler.Service.dll": {},
|
||||
"tools/net5.0/any/FSharp.Core.dll": {},
|
||||
"tools/net5.0/any/Fable.Core.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.Context.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.Environment.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.FakeVar.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.Process.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.String.dll": {},
|
||||
"tools/net5.0/any/Fake.Core.Trace.dll": {},
|
||||
"tools/net5.0/any/Fake.IO.FileSystem.dll": {},
|
||||
"tools/net5.0/any/Femto.deps.json": {},
|
||||
"tools/net5.0/any/Femto.dll": {},
|
||||
"tools/net5.0/any/Femto.pdb": {},
|
||||
"tools/net5.0/any/Femto.runtimeconfig.json": {},
|
||||
"tools/net5.0/any/Newtonsoft.Json.dll": {},
|
||||
"tools/net5.0/any/SemVer.dll": {},
|
||||
"tools/net5.0/any/Serilog.Sinks.Console.dll": {},
|
||||
"tools/net5.0/any/Serilog.dll": {},
|
||||
"tools/net5.0/any/System.Configuration.ConfigurationManager.dll": {},
|
||||
"tools/net5.0/any/System.Security.Cryptography.ProtectedData.dll": {},
|
||||
"tools/net5.0/any/Thoth.Json.Net.dll": {},
|
||||
"tools/net5.0/any/cs/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/de/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/es/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/fr/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/it/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/ja/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/ko/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/pl/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/pt-BR/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/ru/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {},
|
||||
"tools/net5.0/any/tr/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/zh-Hans/FSharp.Core.resources.dll": {},
|
||||
"tools/net5.0/any/zh-Hant/FSharp.Core.resources.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Femto/0.12.0": {
|
||||
"sha512": "nM/hj3QIZxMP8fTIACpwSE4skIEW8zafTstiy8ZxDd7e3tOIgFU9vhy2//n+RNyDf/7T2FlFS8lb4YnZ3a+Ajw==",
|
||||
"type": "package",
|
||||
"path": "femto/0.12.0",
|
||||
"hasTools": true,
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"femto.0.12.0.nupkg.sha512",
|
||||
"femto.nuspec",
|
||||
"tools/net5.0/any/Argu.dll",
|
||||
"tools/net5.0/any/Dotnet.ProjInfo.Helpers.dll",
|
||||
"tools/net5.0/any/Dotnet.ProjInfo.dll",
|
||||
"tools/net5.0/any/DotnetToolSettings.xml",
|
||||
"tools/net5.0/any/FSharp.Compiler.Service.dll",
|
||||
"tools/net5.0/any/FSharp.Core.dll",
|
||||
"tools/net5.0/any/Fable.Core.dll",
|
||||
"tools/net5.0/any/Fake.Core.Context.dll",
|
||||
"tools/net5.0/any/Fake.Core.Environment.dll",
|
||||
"tools/net5.0/any/Fake.Core.FakeVar.dll",
|
||||
"tools/net5.0/any/Fake.Core.Process.dll",
|
||||
"tools/net5.0/any/Fake.Core.String.dll",
|
||||
"tools/net5.0/any/Fake.Core.Trace.dll",
|
||||
"tools/net5.0/any/Fake.IO.FileSystem.dll",
|
||||
"tools/net5.0/any/Femto.deps.json",
|
||||
"tools/net5.0/any/Femto.dll",
|
||||
"tools/net5.0/any/Femto.pdb",
|
||||
"tools/net5.0/any/Femto.runtimeconfig.json",
|
||||
"tools/net5.0/any/Newtonsoft.Json.dll",
|
||||
"tools/net5.0/any/SemVer.dll",
|
||||
"tools/net5.0/any/Serilog.Sinks.Console.dll",
|
||||
"tools/net5.0/any/Serilog.dll",
|
||||
"tools/net5.0/any/System.Configuration.ConfigurationManager.dll",
|
||||
"tools/net5.0/any/System.Security.Cryptography.ProtectedData.dll",
|
||||
"tools/net5.0/any/Thoth.Json.Net.dll",
|
||||
"tools/net5.0/any/cs/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/de/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/es/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/fr/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/it/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/ja/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/ko/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/pl/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/pt-BR/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/ru/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
|
||||
"tools/net5.0/any/tr/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/zh-Hans/FSharp.Core.resources.dll",
|
||||
"tools/net5.0/any/zh-Hant/FSharp.Core.resources.dll"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net6.0": [
|
||||
"femto >= *"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/var/folders/jr/rvssj8b10x99t1pjt6zjs9bm0000gn/T/n3wfnwt2.xtt/restore.csproj",
|
||||
"projectName": "restore",
|
||||
"projectPath": "/var/folders/jr/rvssj8b10x99t1pjt6zjs9bm0000gn/T/n3wfnwt2.xtt/restore.csproj",
|
||||
"packagesPath": "/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2",
|
||||
"outputPath": "/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2/",
|
||||
"projectStyle": "DotnetToolReference",
|
||||
"configFilePaths": [
|
||||
"/Users/acicchetti/src/Crossword-Fable/NuGet.Config",
|
||||
"/Users/acicchetti/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"dependencies": {
|
||||
"femto": {
|
||||
"target": "Package",
|
||||
"version": "[*, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/6.0.101/RuntimeIdentifierGraph.json"
|
||||
}
|
||||
},
|
||||
"runtimes": {
|
||||
"any": {
|
||||
"#import": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
18
femto/.store/femto/0.12.0/restore.csproj.nuget.g.props
Normal file
18
femto/.store/femto/0.12.0/restore.csproj.nuget.g.props
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">DotnetToolReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2/" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgFemto Condition=" '$(PkgFemto)' == '' ">/Users/acicchetti/src/Crossword-Fable/femto/.store/.stage/cul4qrpd.hl2/femto/0.12.0</PkgFemto>
|
||||
</PropertyGroup>
|
||||
</Project>
|
BIN
femto/femto
Executable file
BIN
femto/femto
Executable file
Binary file not shown.
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"sdk": {
|
||||
"version": "6.0.0",
|
||||
"rollForward": "latestMajor",
|
||||
"allowPrerelease": false
|
||||
}
|
||||
}
|
11
justfile
11
justfile
|
@ -1,11 +0,0 @@
|
|||
set windows-powershell := true
|
||||
|
||||
serve:
|
||||
pnpm run start
|
||||
|
||||
setup:
|
||||
dotnet tool restore
|
||||
dotnet paket restore
|
||||
npm i -g pnpm || echo 'pnpm already installed'
|
||||
pnpm i
|
||||
dotnet femto ./src
|
15423
package-lock.json
generated
15423
package-lock.json
generated
File diff suppressed because it is too large
Load diff
47
package.json
47
package.json
|
@ -2,19 +2,48 @@
|
|||
"private": true,
|
||||
"scripts": {
|
||||
"prestart": "dotnet tool restore",
|
||||
"start": "dotnet fable watch ./src --sourceMaps --run vite",
|
||||
"start": "dotnet fable watch src/App.fsproj --sourceMaps --run webpack serve",
|
||||
"build": "dotnet fable src/App.fsproj --run webpack --node-env production",
|
||||
"css": "tailwind build -i content/tailwind-source.css -o content/tailwind-generated.css",
|
||||
"browsers": "browserslist --update-db",
|
||||
"prebuild": "dotnet tool restore",
|
||||
"build": "dotnet fable ./src --sourceMaps --run vite build",
|
||||
"serve": "vite serve",
|
||||
"preview": "dotnet fable ./src --sourceMaps --run vite preview"
|
||||
"test:live": "dotnet fable watch tests --run webpack-dev-server --config ./webpack.tests.js",
|
||||
"build:test": "dotnet fable tests && webpack --config webpack.tests.js",
|
||||
"pretest": "dotnet tool restore",
|
||||
"test": "dotnet fable tests --outDir dist/tests && mocha dist/tests -r esm"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 0.25%",
|
||||
"not dead"
|
||||
],
|
||||
"dependencies": {
|
||||
"date-fns": "^2.28.0",
|
||||
"react": "18.1.0",
|
||||
"react-dom": "18.1.0"
|
||||
"date-fns": "^2.16.1",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"sass": "^1.51.0",
|
||||
"vite": "^2.9.8"
|
||||
"@babel/core": "^7.16.5",
|
||||
"@babel/preset-env": "^7.16.5",
|
||||
"@babel/preset-react": "^7.16.5",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.4",
|
||||
"autoprefixer": "^10.4.0",
|
||||
"babel-loader": "^8.2.3",
|
||||
"browserslist": "^4.19.1",
|
||||
"copy-webpack-plugin": "^10.2.0",
|
||||
"core-js": "^3.20.0",
|
||||
"css-loader": "^6.5.1",
|
||||
"cssnano": "^5.0.14",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"mini-css-extract-plugin": "^2.4.5",
|
||||
"postcss": "^8.4.5",
|
||||
"postcss-loader": "^6.2.1",
|
||||
"react-refresh": "^0.11.0",
|
||||
"source-map-loader": "^3.0.0",
|
||||
"style-loader": "^3.3.1",
|
||||
"tailwindcss": "^3.0.7",
|
||||
"webpack": "^5.65.0",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"webpack-dev-server": "^4.7.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
source https://api.nuget.org/v3/index.json
|
||||
|
||||
nuget Fable.DateFunctions ~> 3
|
||||
nuget Fable.Fetch ~> 2
|
||||
nuget Fable.Mocha ~> 2
|
||||
nuget Feliz ~> 1
|
||||
nuget Feliz.Router ~> 3
|
||||
nuget FSharp.Core ~> 6
|
||||
nuget Thoth.Json ~> 7
|
||||
nuget Zanaptak.TypedCssClasses ~> 1
|
69
paket.lock
69
paket.lock
|
@ -1,69 +0,0 @@
|
|||
NUGET
|
||||
remote: https://api.nuget.org/v3/index.json
|
||||
Fable.AST (3.1.1) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Blob (1.2) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Dom (2.10) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Blob (>= 1.2) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Event (>= 1.5) - restriction: >= netstandard2.0
|
||||
Fable.Browser.WebStorage (>= 1.1) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Event (1.5) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Gamepad (>= 1.1) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Gamepad (1.1) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Browser.WebStorage (1.1) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Event (>= 1.5) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Core (3.7) - restriction: >= netstandard2.0
|
||||
Fable.DateFunctions (3.9)
|
||||
Fable.Core (>= 3.1.6) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Elmish (3.1) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0
|
||||
Fable.Fetch (2.4)
|
||||
Fable.Browser.Blob (>= 1.1.4) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.1.5) - restriction: >= netstandard2.0
|
||||
Fable.Promise (>= 2.2.2) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.Mocha (2.15)
|
||||
Fable.Core (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7) - restriction: >= netstandard2.0
|
||||
Fable.Promise (3.1.3) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.1.5) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Fable.React (8.0.1) - restriction: >= netstandard2.0
|
||||
Fable.Browser.Dom (>= 2.4.4) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.2.7) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Feliz (1.64)
|
||||
Fable.Core (>= 3.1.5) - restriction: >= netstandard2.0
|
||||
Fable.React (>= 7.4) - restriction: >= netstandard2.0
|
||||
Feliz.CompilerPlugins (>= 1.9) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Feliz.CompilerPlugins (1.9) - restriction: >= netstandard2.0
|
||||
Fable.AST (>= 3.0) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Feliz.Router (3.8)
|
||||
Fable.Core (>= 3.1.6) - restriction: >= netstandard2.0
|
||||
Fable.Elmish (>= 3.1) - restriction: >= netstandard2.0
|
||||
Feliz (>= 1.28) - restriction: >= netstandard2.0
|
||||
Feliz.UseListener (>= 0.6.3) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Feliz.UseListener (0.6.3) - restriction: >= netstandard2.0
|
||||
Fable.Core (>= 3.1.6 < 4.0)
|
||||
Feliz (>= 1.17 < 2.0)
|
||||
FSharp.Core (>= 4.7.2)
|
||||
FSharp.Core (6.0.4)
|
||||
Thoth.Json (7.0)
|
||||
Fable.Core (>= 3.1.6) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0
|
||||
Zanaptak.TypedCssClasses (1.0)
|
||||
FSharp.Core (>= 4.3.4) - restriction: >= netstandard2.0
|
477
pnpm-lock.yaml
generated
477
pnpm-lock.yaml
generated
|
@ -1,477 +0,0 @@
|
|||
lockfileVersion: 5.4
|
||||
|
||||
specifiers:
|
||||
date-fns: ^2.28.0
|
||||
react: 18.1.0
|
||||
react-dom: 18.1.0
|
||||
sass: ^1.51.0
|
||||
vite: ^2.9.8
|
||||
|
||||
dependencies:
|
||||
date-fns: 2.28.0
|
||||
react: 18.1.0
|
||||
react-dom: 18.1.0_react@18.1.0
|
||||
|
||||
devDependencies:
|
||||
sass: 1.51.0
|
||||
vite: 2.9.8_sass@1.51.0
|
||||
|
||||
packages:
|
||||
|
||||
/anymatch/3.1.2:
|
||||
resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
|
||||
engines: {node: '>= 8'}
|
||||
dependencies:
|
||||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.1
|
||||
dev: true
|
||||
|
||||
/binary-extensions/2.2.0:
|
||||
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/braces/3.0.2:
|
||||
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
fill-range: 7.0.1
|
||||
dev: true
|
||||
|
||||
/chokidar/3.5.3:
|
||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
||||
engines: {node: '>= 8.10.0'}
|
||||
dependencies:
|
||||
anymatch: 3.1.2
|
||||
braces: 3.0.2
|
||||
glob-parent: 5.1.2
|
||||
is-binary-path: 2.1.0
|
||||
is-glob: 4.0.3
|
||||
normalize-path: 3.0.0
|
||||
readdirp: 3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/date-fns/2.28.0:
|
||||
resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==}
|
||||
engines: {node: '>=0.11'}
|
||||
dev: false
|
||||
|
||||
/esbuild-android-64/0.14.38:
|
||||
resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-android-arm64/0.14.38:
|
||||
resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-64/0.14.38:
|
||||
resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-darwin-arm64/0.14.38:
|
||||
resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-64/0.14.38:
|
||||
resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-freebsd-arm64/0.14.38:
|
||||
resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-32/0.14.38:
|
||||
resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-64/0.14.38:
|
||||
resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm/0.14.38:
|
||||
resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-arm64/0.14.38:
|
||||
resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-mips64le/0.14.38:
|
||||
resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-ppc64le/0.14.38:
|
||||
resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-riscv64/0.14.38:
|
||||
resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-linux-s390x/0.14.38:
|
||||
resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-netbsd-64/0.14.38:
|
||||
resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-openbsd-64/0.14.38:
|
||||
resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-sunos-64/0.14.38:
|
||||
resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-32/0.14.38:
|
||||
resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-64/0.14.38:
|
||||
resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild-windows-arm64/0.14.38:
|
||||
resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/esbuild/0.14.38:
|
||||
resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
esbuild-android-64: 0.14.38
|
||||
esbuild-android-arm64: 0.14.38
|
||||
esbuild-darwin-64: 0.14.38
|
||||
esbuild-darwin-arm64: 0.14.38
|
||||
esbuild-freebsd-64: 0.14.38
|
||||
esbuild-freebsd-arm64: 0.14.38
|
||||
esbuild-linux-32: 0.14.38
|
||||
esbuild-linux-64: 0.14.38
|
||||
esbuild-linux-arm: 0.14.38
|
||||
esbuild-linux-arm64: 0.14.38
|
||||
esbuild-linux-mips64le: 0.14.38
|
||||
esbuild-linux-ppc64le: 0.14.38
|
||||
esbuild-linux-riscv64: 0.14.38
|
||||
esbuild-linux-s390x: 0.14.38
|
||||
esbuild-netbsd-64: 0.14.38
|
||||
esbuild-openbsd-64: 0.14.38
|
||||
esbuild-sunos-64: 0.14.38
|
||||
esbuild-windows-32: 0.14.38
|
||||
esbuild-windows-64: 0.14.38
|
||||
esbuild-windows-arm64: 0.14.38
|
||||
dev: true
|
||||
|
||||
/fill-range/7.0.1:
|
||||
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
dev: true
|
||||
|
||||
/fsevents/2.3.2:
|
||||
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/function-bind/1.1.1:
|
||||
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
||||
dev: true
|
||||
|
||||
/glob-parent/5.1.2:
|
||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||
engines: {node: '>= 6'}
|
||||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
dev: true
|
||||
|
||||
/has/1.0.3:
|
||||
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
|
||||
engines: {node: '>= 0.4.0'}
|
||||
dependencies:
|
||||
function-bind: 1.1.1
|
||||
dev: true
|
||||
|
||||
/immutable/4.0.0:
|
||||
resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==}
|
||||
dev: true
|
||||
|
||||
/is-binary-path/2.1.0:
|
||||
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
binary-extensions: 2.2.0
|
||||
dev: true
|
||||
|
||||
/is-core-module/2.9.0:
|
||||
resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
|
||||
dependencies:
|
||||
has: 1.0.3
|
||||
dev: true
|
||||
|
||||
/is-extglob/2.1.1:
|
||||
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/is-glob/4.0.3:
|
||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
dev: true
|
||||
|
||||
/is-number/7.0.0:
|
||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
dev: true
|
||||
|
||||
/js-tokens/4.0.0:
|
||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||
dev: false
|
||||
|
||||
/loose-envify/1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
dev: false
|
||||
|
||||
/nanoid/3.3.4:
|
||||
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/normalize-path/3.0.0:
|
||||
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/path-parse/1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
dev: true
|
||||
|
||||
/picocolors/1.0.0:
|
||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||
dev: true
|
||||
|
||||
/picomatch/2.3.1:
|
||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||
engines: {node: '>=8.6'}
|
||||
dev: true
|
||||
|
||||
/postcss/8.4.13:
|
||||
resolution: {integrity: sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
dependencies:
|
||||
nanoid: 3.3.4
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
dev: true
|
||||
|
||||
/react-dom/18.1.0_react@18.1.0:
|
||||
resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==}
|
||||
peerDependencies:
|
||||
react: ^18.1.0
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
react: 18.1.0
|
||||
scheduler: 0.22.0
|
||||
dev: false
|
||||
|
||||
/react/18.1.0:
|
||||
resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/readdirp/3.6.0:
|
||||
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
|
||||
engines: {node: '>=8.10.0'}
|
||||
dependencies:
|
||||
picomatch: 2.3.1
|
||||
dev: true
|
||||
|
||||
/resolve/1.22.0:
|
||||
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
is-core-module: 2.9.0
|
||||
path-parse: 1.0.7
|
||||
supports-preserve-symlinks-flag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/rollup/2.72.1:
|
||||
resolution: {integrity: sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/sass/1.51.0:
|
||||
resolution: {integrity: sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
chokidar: 3.5.3
|
||||
immutable: 4.0.0
|
||||
source-map-js: 1.0.2
|
||||
dev: true
|
||||
|
||||
/scheduler/0.22.0:
|
||||
resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/source-map-js/1.0.2:
|
||||
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/supports-preserve-symlinks-flag/1.0.0:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/to-regex-range/5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
engines: {node: '>=8.0'}
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
dev: true
|
||||
|
||||
/vite/2.9.8_sass@1.51.0:
|
||||
resolution: {integrity: sha512-zsBGwn5UT3YS0NLSJ7hnR54+vUKfgzMUh/Z9CxF1YKEBVIe213+63jrFLmZphgGI5zXwQCSmqIdbPuE8NJywPw==}
|
||||
engines: {node: '>=12.2.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
less: '*'
|
||||
sass: '*'
|
||||
stylus: '*'
|
||||
peerDependenciesMeta:
|
||||
less:
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
stylus:
|
||||
optional: true
|
||||
dependencies:
|
||||
esbuild: 0.14.38
|
||||
postcss: 8.4.13
|
||||
resolve: 1.22.0
|
||||
rollup: 2.72.1
|
||||
sass: 1.51.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
15
postcss.config.js
Normal file
15
postcss.config.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
const isDevelopment = process.env.WEBPACK_SERVE === 'true';
|
||||
|
||||
const cssnano = require('cssnano')({
|
||||
preset: ['default', {
|
||||
discardComments: { removeAll: true }
|
||||
}]
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
plugins: [
|
||||
require('tailwindcss')
|
||||
, require('autoprefixer')
|
||||
, !isDevelopment && cssnano
|
||||
].filter(Boolean)
|
||||
};
|
|
@ -1,16 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="index.html" />
|
||||
<Compile Include="Extensions.fs" />
|
||||
<Compile Include="Actions.fs" />
|
||||
<Compile Include="DatePicker.fs" />
|
||||
<Compile Include="UserEntry.fs" />
|
||||
<Compile Include="Container.fs" />
|
||||
<Compile Include="Main.fs" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\.paket\Paket.Restore.targets" />
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Extensions.fs" />
|
||||
<Compile Include="Actions.fs" />
|
||||
<Compile Include="DatePicker.fs" />
|
||||
<Compile Include="UserEntry.fs" />
|
||||
<Compile Include="Container.fs" />
|
||||
<Compile Include="Main.fs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Fable.Fetch" Version="2.4.0" />
|
||||
<PackageReference Include="Feliz" Version="1.57.0" />
|
||||
<PackageReference Include="Feliz.Router" Version="3.8.0" />
|
||||
<PackageReference Include="Fable.DateFunctions" Version="3.8.1" />
|
||||
<PackageReference Include="Thoth.Json" Version="6.0.0" />
|
||||
<PackageReference Include="Zanaptak.TypedCssClasses" Version="1.0.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,11 +1,7 @@
|
|||
module Main
|
||||
|
||||
open System
|
||||
open Feliz
|
||||
open App
|
||||
open Browser.Dom
|
||||
open Fable.Core.JsInterop
|
||||
|
||||
importSideEffects "./styles/global.scss"
|
||||
|
||||
ReactDOM.render (Container.Container(), document.getElementById "feliz-app")
|
||||
|
|
|
@ -6,6 +6,20 @@ open Fable.DateFunctions
|
|||
open Fetch
|
||||
open Thoth.Json
|
||||
|
||||
open Zanaptak.TypedCssClasses
|
||||
|
||||
// Configure type provider to use generated Tailwind classes.
|
||||
// Naming.Verbatim is required for PurgeCSS bundle reduction, see https://tailwindcss.com/docs/optimizing-for-production
|
||||
type tw =
|
||||
CssClasses<
|
||||
source = "./content/tailwind-source.css"
|
||||
, naming = Naming.Verbatim
|
||||
, commandFile = "node"
|
||||
, argumentPrefix = "./tailwind-process.js ./tailwind.config.js"
|
||||
, resolutionFolder = "."
|
||||
//, logFile = "TypedCssClasses.log" // uncomment to enable logging
|
||||
>
|
||||
|
||||
type State =
|
||||
| LoadingScore
|
||||
| ErrorFetchingScore
|
||||
|
@ -28,26 +42,6 @@ let UserEntry (username: string, currentDate: DateTime) =
|
|||
|
||||
let (score, setScore) = React.useState (LoadingScore)
|
||||
|
||||
let load () =
|
||||
async {
|
||||
printfn $"Current Date == {currentDate}"
|
||||
|
||||
fetch $"""https://acicchetti.dev/crossword/v1/{currentDate.Format "YYYY-MM-DD"}""" []
|
||||
|> Promise.bind (fun res -> res.text ())
|
||||
|> Promise.map
|
||||
(fun txt ->
|
||||
let decoded =
|
||||
Decode.Auto.fromString<ScoreApiResponse> (txt, caseStrategy = CamelCase)
|
||||
|
||||
match decoded with
|
||||
| Ok (apiResponse) ->
|
||||
printfn $"""got {apiResponse}"""
|
||||
let score = GetUserScore apiResponse username
|
||||
setScore (score)
|
||||
| Error (_) -> setScore (ErrorFetchingScore))
|
||||
|> ignore
|
||||
}
|
||||
|
||||
React.useEffect
|
||||
(fun () ->
|
||||
printfn $"Current Date == {currentDate}"
|
||||
|
@ -68,10 +62,10 @@ let UserEntry (username: string, currentDate: DateTime) =
|
|||
|> ignore),
|
||||
[| box currentDate |]
|
||||
|
||||
Html.article [
|
||||
Html.h1 [ prop.text
|
||||
$"""{username} - {match score with
|
||||
| LoadingScore -> "Loading"
|
||||
| ErrorFetchingScore -> "Error Fetching Score"
|
||||
| LoadedScore s -> s
|
||||
| NoScore -> "No Score"}""" ] ]
|
||||
Html.div [ prop.classes [tw.``mx-auto``]
|
||||
prop.children [ Html.div [ prop.text
|
||||
$"""{username} - {match score with
|
||||
| LoadingScore -> "Loading"
|
||||
| ErrorFetchingScore -> "Error Fetching Score"
|
||||
| LoadedScore s -> s
|
||||
| NoScore -> "No Score"}""" ] ] ]
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Feliz App</title>
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" type="image/png" href="img/favicon-32x32.png"
|
||||
sizes="32x32"/>
|
||||
<link rel="shortcut icon" type="image/png" href="img/favicon-16x16.png"
|
||||
sizes="16x16"/>
|
||||
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=es6"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="feliz-app"></div>
|
||||
<script type="module" src="./Main.fs.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
Fable.Fetch
|
||||
Feliz.Router
|
||||
Fable.DateFunctions
|
||||
Thoth.Json
|
||||
Zanaptak.TypedCssClasses
|
3
src/styles/input.css
Normal file
3
src/styles/input.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
26
tailwind-process.js
Normal file
26
tailwind-process.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
const fs = require('fs')
|
||||
|
||||
const tailwindConfigFile = fs.realpathSync(process.argv[2])
|
||||
const inputFile = fs.realpathSync(process.argv[3])
|
||||
|
||||
const postcss = require('postcss')
|
||||
const tailwindcss = require('tailwindcss')(tailwindConfigFile)
|
||||
|
||||
const css = fs.readFileSync(inputFile)
|
||||
|
||||
postcss()
|
||||
.use(tailwindcss)
|
||||
.process(css, { from: inputFile })
|
||||
.then(result => {
|
||||
// write included files as leading output lines
|
||||
result.messages
|
||||
.filter(msg => msg.type === "dependency" && msg.file !== inputFile)
|
||||
.forEach(msg => console.log(msg.file))
|
||||
// write the final CSS output
|
||||
console.log("/* ---- end included files, begin generated CSS ---- */")
|
||||
console.log(result.css)
|
||||
})
|
||||
.catch(reason => {
|
||||
console.error(reason)
|
||||
process.exit(1)
|
||||
})
|
10
tailwind.config.js
Normal file
10
tailwind.config.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
module.exports = {
|
||||
content: [
|
||||
"./src/**/*.js",
|
||||
'./content/**/*.html',
|
||||
],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue