Repository: revery-ui/revery Branch: master Commit: 141f70f69d6a Files: 471 Total size: 1.4 MB Directory structure: gitextract_o1re1h8t/ ├── .ci/ │ ├── .gitattributes │ ├── create-docs.yml │ ├── esy-bench.yml │ ├── esy-build-steps.yml │ ├── esy-check-hygiene.yml │ ├── format.sh │ ├── publish-build-cache.yml │ ├── publish-release.yml │ ├── restore-build-cache.yml │ └── use-node.yml ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ └── ISSUE_TEMPLATE/ │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── Revery.opam ├── ReveryBench.opam ├── ReveryExampleJs.opam ├── ReveryExamples.opam ├── ReveryTest.opam ├── ThirdPartyLicenses.txt ├── azure-pipelines.yml ├── bench/ │ ├── exe/ │ │ ├── Bench.re │ │ └── dune │ └── lib/ │ ├── BenchFramework.re │ ├── DrawBench.re │ ├── LayoutBench.re │ ├── NodeUtility.re │ ├── PaintBench.re │ ├── RecalculateBench.re │ ├── SurfaceUtility.re │ ├── ViewNodeBench.re │ └── dune ├── bench.json ├── doc.json ├── dune ├── dune-project ├── dune-workspace ├── examples/ │ ├── AnalogClock.re │ ├── Border.re │ ├── Boxshadow.re │ ├── Calculator.re │ ├── CanQuitExample.re │ ├── CanvasExample.re │ ├── CheckboxExample.re │ ├── DefaultButton.re │ ├── DropdownExample.re │ ├── Examples.re │ ├── FileDragAndDrop.re │ ├── Flexbox.re │ ├── FocusExample.re │ ├── FontAwesome5FreeSolid.otf │ ├── FontsExample.re │ ├── GameOfLife.re │ ├── Hello.re │ ├── HitTests.re │ ├── HoverExample.re │ ├── ImageQualityExample.re │ ├── Info.plist │ ├── InputExample.re │ ├── LayerExample.re │ ├── MarkdownExample.re │ ├── NativeFileExample.re │ ├── NativeIconExample.re │ ├── NativeInputExample.re │ ├── NativeMenuExample.re │ ├── NativeNotificationExample.re │ ├── NestedClickable.re │ ├── RadioButtonExample.re │ ├── RichTextExample.re │ ├── SVGExample.re │ ├── ScreenCapture.re │ ├── ScrollView.re │ ├── Slider.re │ ├── SpringExample.re │ ├── Stopwatch.re │ ├── TextExample.re │ ├── TodoExample.re │ ├── TreeView.re │ ├── URLFileOpen.re │ ├── WavFilePlaybackExample.re │ ├── WindowControl.re │ ├── ZoomExample.re │ ├── dune │ ├── gl-matrix-min.js │ ├── index.html │ └── stubs/ │ ├── ExampleStubs.re │ ├── dune │ ├── example_stubs.c │ └── example_stubs.js ├── examples.json ├── include/ │ ├── COPYING.txt │ ├── KHR/ │ │ └── khrplatform.h │ ├── glad/ │ │ └── glad.h │ └── stb_image.h ├── js.json ├── lsan.supp ├── package.json ├── packages/ │ ├── reason-harfbuzz/ │ │ ├── examples/ │ │ │ └── harfbuzz-cli/ │ │ │ ├── HarfbuzzCli.re │ │ │ ├── dune │ │ │ └── run-harfbuzz.sh │ │ ├── src/ │ │ │ ├── Harfbuzz.re │ │ │ ├── Harfbuzz.rei │ │ │ ├── config/ │ │ │ │ ├── discover.re │ │ │ │ └── dune │ │ │ ├── dune │ │ │ └── harfbuzz.cpp │ │ └── test/ │ │ ├── FeaturesTest.re │ │ ├── ShapingTest.re │ │ ├── TestFramework.re │ │ └── dune │ ├── reason-sdl2/ │ │ └── src/ │ │ ├── Float32Array.re │ │ ├── Uint16Array.re │ │ ├── config/ │ │ │ ├── discover.re │ │ │ └── dune │ │ ├── dune │ │ ├── sdl2.re │ │ ├── sdl2_stubs.js │ │ ├── sdl2_wrapper.cpp │ │ └── stb_image.cpp │ ├── reason-skia/ │ │ ├── bench/ │ │ │ ├── BenchFramework.re │ │ │ ├── CanvasBench.re │ │ │ ├── ColorBench.re │ │ │ ├── MatrixBench.re │ │ │ ├── RectBench.re │ │ │ ├── SkiaPaintBench.re │ │ │ └── dune │ │ ├── examples/ │ │ │ ├── skia-cli/ │ │ │ │ ├── LICENSE_FiraCode.txt │ │ │ │ ├── LICENSE_ORBITRON.md │ │ │ │ ├── SkiaCli.re │ │ │ │ └── dune │ │ │ ├── skia-font-manager-cli/ │ │ │ │ ├── SkiaFontManagerCli.re │ │ │ │ ├── dune │ │ │ │ └── run-skia-fontmanager.sh │ │ │ └── skia-sdl2/ │ │ │ ├── SkiaSdl.re │ │ │ └── dune │ │ ├── src/ │ │ │ ├── Skia.re │ │ │ ├── Skia.rei │ │ │ ├── config/ │ │ │ │ ├── discover.re │ │ │ │ └── dune │ │ │ ├── dune │ │ │ └── wrapped/ │ │ │ ├── bindings/ │ │ │ │ ├── SkiaWrappedBindings.re │ │ │ │ └── dune │ │ │ ├── c/ │ │ │ │ ├── c_stubs.c │ │ │ │ ├── c_stubs.h │ │ │ │ └── dune │ │ │ ├── lib/ │ │ │ │ ├── SkiaWrapped.re │ │ │ │ ├── dune │ │ │ │ └── raw_bindings.c │ │ │ ├── stubgen/ │ │ │ │ ├── dune │ │ │ │ ├── stubgen.ml │ │ │ │ └── types_stubgen.ml │ │ │ └── types/ │ │ │ ├── SkiaWrappedTypes.re │ │ │ └── dune │ │ └── test/ │ │ ├── ColorTest.re │ │ ├── MatrixTest.re │ │ ├── PaintTest.re │ │ ├── RectTest.re │ │ ├── TestFramework.re │ │ └── dune │ ├── revery-text-wrap/ │ │ ├── examples/ │ │ │ └── text-wrap-cli/ │ │ │ ├── ReveryTextWrapCli.re │ │ │ └── dune │ │ └── src/ │ │ ├── Revery_TextWrap.re │ │ ├── Revery_TextWrap.rei │ │ ├── Tokenize.re │ │ └── dune │ └── zed/ │ └── src/ │ ├── dune │ ├── zed_utf8.ml │ └── zed_utf8.mli ├── reason-harfbuzz.opam ├── reason-sdl2.opam ├── reason-skia.opam ├── scripts/ │ ├── docker/ │ │ ├── archlinux/ │ │ │ └── Dockerfile │ │ └── centos/ │ │ └── Dockerfile │ ├── docker-build.sh │ ├── make-binary-file.js │ └── release.sh ├── src/ │ ├── Core/ │ │ ├── App.re │ │ ├── App.rei │ │ ├── Color.re │ │ ├── Color.rei │ │ ├── Colors.re │ │ ├── Environment.re │ │ ├── Environment.rei │ │ ├── Event.re │ │ ├── Events.re │ │ ├── GarbageCollector.re │ │ ├── Key.re │ │ ├── Key.rei │ │ ├── Log.re │ │ ├── Log.rei │ │ ├── MouseButton.re │ │ ├── MouseButton.rei │ │ ├── MouseCursors.re │ │ ├── MouseCursors.rei │ │ ├── Performance.re │ │ ├── Revery_Core.re │ │ ├── TextOverflow.re │ │ ├── TextWrapping.re │ │ ├── Tick.re │ │ ├── Time.re │ │ ├── Time.rei │ │ ├── UniqueId.re │ │ ├── Vsync.re │ │ ├── Window.re │ │ ├── Window.rei │ │ ├── WindowCreateOptions.re │ │ ├── WindowStyles.re │ │ └── dune │ ├── Draw/ │ │ ├── CanvasContext.re │ │ ├── DebugDraw.re │ │ ├── ImageResizeMode.re │ │ ├── Revery_Draw.re │ │ ├── Text.re │ │ ├── Text.rei │ │ └── dune │ ├── Font/ │ │ ├── Discovery.re │ │ ├── Feature.re │ │ ├── Feature.rei │ │ ├── Features.re │ │ ├── Features.rei │ │ ├── FontCache.re │ │ ├── FontCache.rei │ │ ├── FontFamily.re │ │ ├── FontFamily.rei │ │ ├── FontManager.re │ │ ├── FontMetrics.re │ │ ├── FontRenderer.re │ │ ├── FontWeight.re │ │ ├── FontWidth.re │ │ ├── Revery_Font.re │ │ ├── ShapeResult.re │ │ ├── Smoothing.re │ │ ├── dune │ │ └── files/ │ │ └── Inconsolata.otf │ ├── IO/ │ │ ├── File.re │ │ ├── File.rei │ │ ├── Image.re │ │ ├── Image.rei │ │ ├── LwtLetOperators.re │ │ ├── Revery_IO.re │ │ └── dune │ ├── Lwt/ │ │ ├── Revery_Lwt.re │ │ └── dune │ ├── Math/ │ │ ├── Angle.re │ │ ├── BoundingBox2d.re │ │ ├── BoundingBox2d.rei │ │ ├── Revery_Math.re │ │ └── dune │ ├── Native/ │ │ ├── Dialog.re │ │ ├── Environment.re │ │ ├── Gtk.re │ │ ├── Icon.re │ │ ├── Initialization.re │ │ ├── Input.re │ │ ├── Input.rei │ │ ├── Locale.re │ │ ├── Menu.re │ │ ├── Menu.rei │ │ ├── NSObject.re │ │ ├── NSView.re │ │ ├── Notification.re │ │ ├── ReveryCocoa.h │ │ ├── ReveryGtk.h │ │ ├── ReveryLinux.h │ │ ├── ReveryMac.h │ │ ├── ReveryNSObject.c │ │ ├── ReveryWin32.h │ │ ├── ReveryWindows.h │ │ ├── Revery_Native.c │ │ ├── Revery_Native.re │ │ ├── Shell.re │ │ ├── Window.re │ │ ├── caml_values.h │ │ ├── cocoa/ │ │ │ ├── ReveryAppDelegate.c │ │ │ ├── ReveryAppDelegate.h │ │ │ ├── ReveryAppDelegate_func.c │ │ │ ├── ReveryAppDelegate_func.h │ │ │ ├── ReveryButtonTarget.c │ │ │ ├── ReveryButtonTarget.h │ │ │ ├── ReveryMenuItemTarget.c │ │ │ ├── ReveryMenuItemTarget.h │ │ │ ├── ReveryNSView.c │ │ │ ├── ReveryNSViewCoords.c │ │ │ ├── ReveryNSViewCoords.h │ │ │ ├── ReveryProgressBar.c │ │ │ ├── ReveryProgressBar.h │ │ │ └── SDLAppDelegate.h │ │ ├── config/ │ │ │ ├── discover.re │ │ │ └── dune │ │ ├── dialog.c │ │ ├── dialog.js │ │ ├── dialog_cocoa.c │ │ ├── dialog_gtk.c │ │ ├── dialog_win32.c │ │ ├── dune │ │ ├── environment.c │ │ ├── environment_linux.c │ │ ├── environment_mac.c │ │ ├── environment_windows.c │ │ ├── gtk/ │ │ │ ├── ReveryGtk.c │ │ │ └── ReveryGtk_Widget.c │ │ ├── icon.c │ │ ├── icon_cocoa.c │ │ ├── icon_win32.c │ │ ├── input.c │ │ ├── input_cocoa.c │ │ ├── locale.c │ │ ├── locale_cocoa.c │ │ ├── locale_win32.c │ │ ├── menu.c │ │ ├── menu.h │ │ ├── menu_cocoa.c │ │ ├── notification.c │ │ ├── notification_cocoa.c │ │ ├── shell.c │ │ ├── shell_cocoa.c │ │ ├── shell_gtk.c │ │ ├── shell_win32.c │ │ ├── utilities.c │ │ ├── utilities.h │ │ ├── win32_target.h │ │ ├── window.c │ │ └── window_cocoa.c │ ├── Platform.re │ ├── Revery.re │ ├── UI/ │ │ ├── Animation.re │ │ ├── Animation.rei │ │ ├── CanvasNode.re │ │ ├── Container.re │ │ ├── Dimensions.re │ │ ├── Easing.re │ │ ├── FileDrop.re │ │ ├── Focus.re │ │ ├── Focus.rei │ │ ├── HitTest.re │ │ ├── ImageNode.re │ │ ├── ImageResizeMode.re │ │ ├── Keyboard.re │ │ ├── LayerNode.re │ │ ├── Layout.re │ │ ├── Mouse.re │ │ ├── Mouse.rei │ │ ├── NativeButtonNode.re │ │ ├── Node.re │ │ ├── NodeDrawContext.re │ │ ├── NodeEvents.re │ │ ├── Offset.re │ │ ├── Overflow.re │ │ ├── React.re │ │ ├── Reconciler.re │ │ ├── Render.re │ │ ├── RenderCondition.re │ │ ├── RenderContainer.re │ │ ├── Revery_UI.re │ │ ├── RichText.re │ │ ├── RichText.rei │ │ ├── Selector.re │ │ ├── Spring.re │ │ ├── Spring.rei │ │ ├── Style.re │ │ ├── TextNode.re │ │ ├── Transform.re │ │ ├── Transform.rei │ │ ├── Ui.re │ │ ├── Ui.rei │ │ ├── UiEvents.re │ │ ├── ViewNode.re │ │ └── dune │ ├── UI_Components/ │ │ ├── Button.re │ │ ├── Button.rei │ │ ├── Center.re │ │ ├── Checkbox.re │ │ ├── Checkbox.rei │ │ ├── Clickable.re │ │ ├── Clickable.rei │ │ ├── ClickableText.re │ │ ├── ClipContainer.re │ │ ├── ClipContainer.rei │ │ ├── Column.re │ │ ├── Container.re │ │ ├── Container.rei │ │ ├── Dropdown.re │ │ ├── ExpandContainer.re │ │ ├── Input.re │ │ ├── Link.re │ │ ├── Markdown.re │ │ ├── Markdown.rei │ │ ├── Positioned.re │ │ ├── Positioned.rei │ │ ├── RadioButtons.re │ │ ├── Revery_UI_Components.re │ │ ├── RichTextView.re │ │ ├── Row.re │ │ ├── SVG.re │ │ ├── ScrollView.re │ │ ├── Slider.re │ │ ├── Stack.re │ │ ├── Ticker.re │ │ ├── Ticker.rei │ │ ├── Tree.re │ │ └── dune │ ├── UI_Hooks/ │ │ ├── Effect.re │ │ ├── Effect.rei │ │ ├── Reducer.re │ │ ├── Reducer.rei │ │ ├── Ref.re │ │ ├── Ref.rei │ │ ├── Revery_UI_Hooks.re │ │ ├── Spring.re │ │ ├── State.re │ │ ├── State.rei │ │ ├── Tick.re │ │ ├── Tick.rei │ │ ├── Timer.re │ │ └── dune │ ├── UI_Primitives/ │ │ ├── AllowPointer.re │ │ ├── BoxShadow.re │ │ ├── Canvas.re │ │ ├── IgnorePointer.re │ │ ├── Image.re │ │ ├── Image.rei │ │ ├── Layer.re │ │ ├── NativeButton.re │ │ ├── Opacity.re │ │ ├── Padding.re │ │ ├── PrimitiveNodeFactory.re │ │ ├── Revery_UI_Primitives.re │ │ ├── Text.re │ │ ├── View.re │ │ └── dune │ ├── Utility/ │ │ ├── HeadlessWindow.re │ │ ├── HeadlessWindow.rei │ │ ├── Revery_Utility.re │ │ └── dune │ ├── dune │ └── index.mld ├── test/ │ ├── Core/ │ │ ├── ColorTests.re │ │ ├── EnvironmentTests.re │ │ ├── TestFramework.re │ │ ├── TextTests.re │ │ ├── TickTest.re │ │ └── dune │ ├── Font/ │ │ ├── FamilyTest.re │ │ ├── FontCacheTest.re │ │ ├── TestFramework.re │ │ └── dune │ ├── Math/ │ │ ├── BoundingBox2dTests.re │ │ ├── ClampTest.re │ │ ├── InterpolateTest.re │ │ ├── TestFramework.re │ │ └── dune │ ├── TestRunner.re │ ├── UI/ │ │ ├── AnimationTest.re │ │ ├── HooksTest.re │ │ ├── MouseTest.re │ │ ├── NodeTests.re │ │ ├── ReconcilerTests.re │ │ ├── StyleTest.re │ │ ├── TestFramework.re │ │ └── dune │ ├── collateral/ │ │ ├── FiraCode-LICENSE.txt │ │ ├── JetBrainsMono-LICENSE.txt │ │ ├── dune │ │ └── test-asset.txt │ └── dune ├── test.json └── update-lockfiles.sh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .ci/.gitattributes ================================================ # Declare shell files to have LF endings on checkout # On Windows, the default git setting for `core.autocrlf` # means that when checking out code, LF endings get converted # to CRLF. This causes problems for shell scripts, as bash # gets choked up on the extra `\r` character. *.sh text eol=lf ================================================ FILE: .ci/create-docs.yml ================================================ # These steps are only run on Linux steps: - script: "esy '@doc' install" displayName: "Install doc dependency" condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - script: "esy '@doc' build" displayName: "Build docs" condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - script: echo '##vso[task.setvariable variable=docsPath]'$(esy '@doc' echo '#{self.target_dir}/default/_doc/_html') displayName: "Save docsPath in variable" condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - task: PublishBuildArtifacts@1 displayName: "Publish Artifact: Docs" condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) inputs: PathtoPublish: $(docsPath) ArtifactName: Docs ================================================ FILE: .ci/esy-bench.yml ================================================ # Run benchmarks steps: - script: esy @bench install displayName: 'esy @bench install' - script: esy @bench build displayName: 'esy @bench build' - script: esy @bench x ReveryBench displayName: 'esy @bench x ReveryBench' ================================================ FILE: .ci/esy-build-steps.yml ================================================ # Cross-platform set of build steps for building esy projects steps: - script: npm install -g esy@0.6.7 displayName: 'npm install -g esy@0.6.7' - script: esy install displayName: 'esy install' - script: esy build displayName: 'esy build' - script: esy @test install displayName: 'esy @test install' - script: esy @test run displayName: 'esy @test run' - script: esy @examples install displayName: 'esy @examples install' - script: esy @examples run-harfbuzz displayName: 'esy @examples run-harfbuzz' - script: esy @examples x SkiaCli displayName: '@esy @examples x SkiaCli' - script: esy @examples x SkiaCli.bc displayName: '@esy @examples x SkiaCli.bc' - script: esy @examples run-skia-fontmanager displayName: 'esy @examples run-skia-fontmanager' - script: esy @examples x ReveryTextWrapCli displayName: 'esy @examples x ReveryTextWrapCli' - script: esy @examples x ReveryTextWrapCli.bc displayName: 'esy @examples x ReveryTextWrapCli.bc' ================================================ FILE: .ci/esy-check-hygiene.yml ================================================ # Cross-platform set of build steps for building esy projects steps: - script: npm install -g esy@0.6.7 displayName: 'npm install -g esy@0.6.7' - script: esy install displayName: 'esy install' - script: git diff --exit-code displayName: 'check that `esy.lock` is up-to-date. If this fails, commit `esy.lock` changes and re-submit PR.' - script: esy @bench install displayName: 'esy @bench install' - script: git diff --exit-code displayName: 'check that `bench.esy.lock` is up-to-date. If this fails, commit `bench.esy.lock` changes and re-submit PR.' - script: esy @js install displayName: 'esy @js install' - script: git diff --exit-code displayName: 'check that `js.esy.lock` is up-to-date. If this fails, commit `js.esy.lock` changes and re-submit PR.' - script: esy @test install displayName: 'esy @test install' - script: git diff --exit-code displayName: 'check that `test.esy.lock` is up-to-date. If this fails, commit `test.esy.lock` changes and re-submit PR.' - script: esy @doc install displayName: 'esy @doc install' - script: git diff --exit-code displayName: 'check that `doc.esy.lock` is up-to-date. If this fails, commit `doc.esy.lock` changes and re-submit PR.' - script: esy build displayName: 'esy build' - script: esy format displayName: esy format - script: git diff --exit-code displayName: 'check that formatting is correct. If this fails, run `esy format` and re-submit PR.' - script: esy b dune build @check displayName: 'esy b dune build @check' ================================================ FILE: .ci/format.sh ================================================ #!/usr/bin/env bash OS=$1 dune build @fmt --auto-promote caml_output=$? if [[ $OS == "windows" ]] then files=$(/usr/bin/find $(pwd) -type f \( -iname \*.c -o -iname \*.h -o -iname \*.cpp \) -not -path "*_esy/*") native_output=$(astyle -n -Q --style=java --s4 $(cygpath -w $files)) elif [[ $OS == "darwin" ]] then native_output=$(find -E . -regex '.*\.(c|h|cpp)' -type f -not -path "*_esy/*" -exec astyle -n -Q --style=java --s4 {} \;) elif [[ $OS == "linux" ]] then native_output=$(find ./ -type f \( -iname \*.c -o -iname \*.h -o -iname \*.cpp \) -not -path "*_esy/*" -exec astyle -n -Q --style=java --s4 {} \;) fi if [[ $native_output ]] then printf "\nFormatted the following native stubs:\n%s\n" "$native_output" fi if [[ $caml_output != 0 ]] || [[ $native_output != "" ]] then exit 1 fi ================================================ FILE: .ci/publish-build-cache.yml ================================================ # Steps for publishing project cache steps: - bash: 'mkdir -p $(STAGING_DIRECTORY)' condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Publish] Create cache directory' - bash: | cd $(ESY__CACHE_INSTALL_PATH) pwd STDIR=$STAGING_DIRECTORY if [ "$AGENT_OS" == "Windows_NT" ]; then STDIR=$( cygpath --unix --absolute "$STAGING_DIRECTORY") fi echo "STDIR: $STDIR" tar -czf "$STDIR/esy-cache.tar" . workingDirectory: '' condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Publish] Tar esy cache directory' # - bash: 'cd $(ESY__NPM_ROOT) && tar -czf $(STAGING_DIRECTORY)/npm-cache.tar .' # condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) # displayName: '[Cache][Publish] Tar npm cache directory' - task: PublishBuildArtifacts@1 displayName: '[Cache][Publish] Upload tarball' condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) inputs: pathToPublish: '$(STAGING_DIRECTORY)' artifactName: 'cache-$(Agent.OS)-install' parallel: true parallelCount: 8 ================================================ FILE: .ci/publish-release.yml ================================================ # Steps for publishing project cache steps: - task: PublishBuildArtifacts@1 displayName: '[Release]' inputs: pathToPublish: '_release' artifactName: 'release-$(Agent.OS)' parallel: true parallelCount: 8 ================================================ FILE: .ci/restore-build-cache.yml ================================================ # Steps for restoring project cache steps: - task: DownloadBuildArtifacts@0 condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Restore] Restore install' inputs: buildType: 'specific' project: '$(System.TeamProject)' pipeline: '$(Build.DefinitionName)' branchName: 'refs/heads/master' buildVersionToDownload: 'latestFromBranch' downloadType: 'single' artifactName: 'cache-$(Agent.OS)-install' downloadPath: '$(STAGING_DIRECTORY)' continueOnError: true - bash: 'mkdir -p $(ESY__CACHE_INSTALL_PATH)' condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Restore] Create cache directory' # - bash: 'cd $(ESY__NPM_ROOT) && tar -xf $(STAGING_DIRECTORY)/cache-$(Agent.OS)-install/npm-cache.tar -C .' # continueOnError: true # condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) # displayName: '[Cache][Restore] Untar npm cache directory' - bash: | cd $(ESY__CACHE_INSTALL_PATH) pwd STDIR=$STAGING_DIRECTORY if [ "$AGENT_OS" == "Windows_NT" ]; then STDIR=$( cygpath --unix --absolute "$STAGING_DIRECTORY") fi echo "STDIR: $STDIR" tar -xf "$STDIR/cache-$(Agent.OS)-install/esy-cache.tar" -C . continueOnError: true condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Restore] Untar esy cache directory' - bash: 'rm -rf *' continueOnError: true workingDirectory: '$(STAGING_DIRECTORY)' condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: '[Cache][Restore] Clean up' ================================================ FILE: .ci/use-node.yml ================================================ steps: - task: NodeTool@0 displayName: 'Use Node 12.x' inputs: versionSpec: 12.x ================================================ FILE: .gitattributes ================================================ # Declare shell files to have LF endings on checkout # On Windows, the default git setting for `core.autocrlf` # means that when checking out code, LF endings get converted # to CRLF. This causes problems for shell scripts, as bash # gets choked up on the extra `\r` character. *.sh text eol=lf # Hide lockfile updates *esy.lock/* linguist-generated # Recognize all re files as Reason *.re linguist-language=Reason ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms open_collective: revery ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug Report about: Create a report to help us improve --- - Operating System: - Revery Version: - OCaml version: - Native, Bytecode, or JS build: - Link to github repo: - Steps to reproduce: - Actual Result: - Expected Result: - Additional Information: - Search terms used: ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature Request about: Suggest an idea for this project --- ================================================ FILE: .gitignore ================================================ # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage # nyc test coverage .nyc_output # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories # missing trailing slash since it's a symlink with esy node_modules jspm_packages/ # TypeScript v1 declaration files typings/ # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variables file .env # next.js build output .next # dune build folder _esy/ # install files *.install **/.merlin #macOS .DS_Store skia-c-example.png skia-svg-example.png skia-font-manager-output.png Arial.ttf .vscode ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at oss@outrunlabs.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 Bryan Phelps Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

Logo

Build native, high-performance, cross-platform desktop apps with reason!

Build Status npm version Join the chat on discord! Backers

---

Slider components

:construction: __NOTE:__ Revery is a work-in-progress and in active development! :construction: To get a taste of Revery, check out our JavaScript + WebGL build on the [playground](https://outrunlabs.com/revery/playground). For the best experience, though, you'll want to try a [native build](https://github.com/revery-ui/revery/wiki/Building-&-Installing). ## Motivation Today, [Electron](https://electronjs.org/) is one of the most popular tools for building desktop apps - using an HTML, JS, CSS stack. However, it has a heavy footprint in terms of both RAM and CPU - __essentially packing an entire browser into the app.__ Even with that tradeoff, it has a lot of great aspects - it's the quickest way to build a cross-platform app & it provides a great development experience - as can be testified by its usage in popular apps like VSCode, Discord, and Slack. Revery is kind of like super-fast, _native code_ Electron - with bundled React-like/Redux-like libraries and a fast build system - all ready to go! Revery is built with [reasonml](https://reasonml.github.io), which is a javascript-like syntax on top of [OCaml](https://ocaml.org) This means that the language is accessible to JS developers. Your apps are compiled to native code with the Reason / OCaml toolchain - with __instant startup__ and __performance comparable to native C code.__ Revery features platform-accelerated, GPU-accelerated rendering. The compiler itself is fast, too! Revery is an experiment - can we provide a great developer experience and help teams be productive, without making sacrifices on performance? ### Design Decisions - __Consistent cross-platform behavior__ A major value prop of Electron is that you can build for all platforms at once. You have great confidence as a developer that your app will look and work the same across different platforms. Revery is the same - aside from platform-specific behavior, if your app looks or behaves differently on another platform, that's a bug! As a consequence, Revery is like [flutter](https://flutter.io) in that it __does not use native widgets__. This means more work for us, but also that we have more predictable functionality cross-platform! > __NOTE:__ If you're looking for something that does leverage native widgets, check out [briskml](https://github.com/briskml/brisk). Another alternative is the [cuite](https://github.com/let-def/cuite) OCaml binding for [Qt](https://github.com/let-def/cuite). - __High performance__ Performance should be at the forefront, and not a compromise - we need to develop and build benchmarks that help ensure top-notch performance and start-up time. - __Type-safe, functional code__ We might have some dirty mutable objects for performance - but our high-level API should be purely functional. You should be able to follow the React model of modelling your UI as a _pure function_ of application state -> UI. ## Getting Started - Check out [revery-quick-start](https://github.com/revery-ui/revery-quick-start) to get up and running with your own Revery app! - Try out our [interactive playground](https://www.outrunlabs.com/revery/playground/) - Read through our [docs](https://www.outrunlabs.com/revery/api/revery/) ## Contributing We'd love your help, and welcome PRs and contributions. Some ideas for getting started: - [Build and run](https://github.com/revery-ui/revery/wiki/Building-&-Installing) Revery - View our [Roadmap](https://github.com/revery-ui/revery/wiki/Roadmap) - Help us improve our [documentation](https://github.com/revery-ui/revery/blob/master/src/index.mld) - Help us build [examples](https://github.com/revery-ui/revery/tree/master/examples) - Help us [fix bugs](https://github.com/revery-ui/revery/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+label%3A%22bug%22) and [build features](https://github.com/revery-ui/revery/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22++-label%3Abug) - Help us [log bugs and open issues](https://github.com/bryphe/revery/issues/new) - Support the project on [OpenCollective](https://opencollective.com/revery) - Follow us on [Twitter](https://twitter.com/reveryui) or chat with us on [Discord](https://discord.gg/UvQ2cFn)! ## License Revery is provided under the [MIT License](LICENSE). Revery bundles several dependencies under their own license terms - please refer to [ThirdPartyLicenses.txt](./ThirdPartyLicenses.txt). ## Contributors Thanks to everyone who has [contributed](https://github.com/revery-ui/revery/graphs/contributors) to Revery! ## Backers Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/revery#backer)] ## Built with Revery

Onivim 2

## Special Thanks `revery` would not be possible without a bunch of cool tech: - [ocaml](https://ocaml.org) made these tools possible - thanks [Inria](http://gallium.inria.fr/) & [OCaml Labs](http://ocamllabs.io/)! - [reasonml](https://reasonml.github.io) made revery possible - thanks @jordwalke! - [flex](https://github.com/jordwalke/flex) by @jordwalke - [briskml](https://github.com/briskml) - [brisk-reconciler](https://github.com/briskml/brisk-reconciler) - the "native React" implementation. - [reason-sdl2](https://github.com/revery-ui/reason-sdl2) - [SDL2](https://www.libsdl.org) - [stb-image](https://github.com/nothings/stb) - [reason-fontkit](https://github.com/bryphe/reason-fontkit) - [freetype2](https://www.freetype.org) - [harfbuzz](https://www.freedesktop.org/wiki/Software/HarfBuzz) - [reason-gl-matrix](https://github.com/bryphe/reason-gl-matrix) - [gl-matrix](http://glmatrix.net) - [glm](https://glm.g-truc.net/0.9.9/index.html) - [@reason-native/console](https://github.com/facebookexperimental/reason-native/tree/master/src/console) `revery` was inspired by some __awesome projects:__ - [react-native](https://facebook.github.io/react-native/) - [ReactMini](https://github.com/reasonml/reason-react/tree/master/ReactMini) - [cuite](https://github.com/let-def/cuite) - [wall](https://github.com/let-def/wall) - [elm](https://elm-lang.org/) - [reprocessing](https://github.com/Schmavery/reprocessing) # Hot reload We don't have a Hot Reload yet but it is on our roadmap. In the meantime, you can check branch [feat/hot-reload](https://github.com/revery-ui/revery/tree/feat/hot-reload) to see the progression. In the meantime @mbernat has done a [script](https://gist.github.com/mbernat/abf651653c123374037c27377f41d0a0) that allow to relaunch the APP when the binary changed. ================================================ FILE: Revery.opam ================================================ opam-version: "1.2" version: "dev" maintainer: "bryphe@outlook.com" author: ["Bryan Phelps"] build: [ ] ================================================ FILE: ReveryBench.opam ================================================ opam-version: "1.2" version: "dev" maintainer: "bryphe@outlook.com" author: ["Bryan Phelps"] build: [ ] ================================================ FILE: ReveryExampleJs.opam ================================================ opam-version: "1.2" version: "dev" maintainer: "bryphe@outlook.com" author: ["Bryan Phelps"] build: [ ] ================================================ FILE: ReveryExamples.opam ================================================ opam-version: "1.2" version: "dev" maintainer: "bryphe@outlook.com" author: ["Bryan Phelps"] build: [ ] ================================================ FILE: ReveryTest.opam ================================================ opam-version: "1.2" version: "dev" maintainer: "bryphe@outlook.com" author: ["Bryan Phelps"] build: [ ] ================================================ FILE: ThirdPartyLicenses.txt ================================================ Revery THIRD-PARTY SOFTWARE NOTICES AND INFORMATION This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Outrun Labs, LLC received such components are set forth below. Outrun Labs, LLC reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. 1. MinCW Runtime License (https://sourceforge.net/p/mingw/mingw-org-wsl/ci/21762bb4a1bd0c88c38eead03f59e8d994349e83/tree/LICENSE) 2. Roboto Font by Google (https://github.com/google/fonts/tree/master/apache/roboto) 3. FontAwesome/Font-Awesome (https://github.com/FontAwesome/Font-Awesome) 4. SDL2 (https://www.libsdl.org) 5. Zed (https://github.com/ocaml-community/zed) %% MingW Runtime License NOTICES AND INFORMATION BEGIN HERE ============================================== Copyright (c) 2012 MinGW.org project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice, this permission notice and the below disclaimer shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================================== END of MingW Runtime License NOTICES AND INFORMATION %% Roboto Font NOTICES AND INFORMATION BEGIN HERE ============================================== Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ============================================== END of Roboto Font NOTICES AND INFORMATION %% FontAwesome NOTICES AND INFORMATION BEGIN HERE ============================================== Font Awesome Free License ------------------------- Font Awesome Free is free, open source, and GPL friendly. You can use it for commercial projects, open source projects, or really almost whatever you want. Full Font Awesome Free license: https://fontawesome.com/license/free. # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) In the Font Awesome Free download, the CC BY 4.0 license applies to all icons packaged as SVG and JS file types. # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) In the Font Awesome Free download, the SIL OLF license applies to all icons packaged as web and desktop font files. # Code: MIT License (https://opensource.org/licenses/MIT) In the Font Awesome Free download, the MIT license applies to all non-font and non-icon files. # Attribution Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font Awesome Free files already contain embedded comments with sufficient attribution, so you shouldn't need to do anything additional when using these files normally. We've kept attribution comments terse, so we ask that you do not actively work to remove them from files, especially code. They're a great way for folks to learn about Font Awesome. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ============================================== END of FontAwesome NOTICES AND INFORMATION %% SDL 2 NOTICES AND INFORMATION BEGIN HERE ============================================== This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ============================================== END of SDL 2 NOTICES AND INFORMATION %% Zed NOTICES AND INFORMATION BEGIN HERE ============================================== Copyright (c) 2011, Jeremie Dimino All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Jeremie Dimino nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ============================================== END of Zed NOTICES AND INFORMATION %%