diff --git a/.circleci/config.yml b/.circleci/config.yml
index 35c57f45a..7bb7f4160 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -111,6 +111,7 @@ jobs:
paths:
- packages/rndom-redbox/lib
- packages/rndom-switch/lib
+ - packages/rndom-slider/lib
build_rntester:
<<: *container_config
diff --git a/.flowconfig b/.flowconfig
index f9805d50c..dcef71142 100644
--- a/.flowconfig
+++ b/.flowconfig
@@ -20,6 +20,7 @@
[include]
./packages/rndom-redbox/
./packages/rndom-switch/
+./packages/rndom-slider/
./packages/rnpm-plugin-dom/
[libs]
diff --git a/packages/react-native-dom/Libraries/Components/Slider/Slider.dom.js b/packages/react-native-dom/Libraries/Components/Slider/Slider.dom.js
index 67a189de7..2a183aa20 100644
--- a/packages/react-native-dom/Libraries/Components/Slider/Slider.dom.js
+++ b/packages/react-native-dom/Libraries/Components/Slider/Slider.dom.js
@@ -1,15 +1,284 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
- * All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
*
* @providesModule Slider
* @flow
*/
-
"use strict";
-module.exports = require("UnimplementedView");
+const Image = require("Image");
+const ColorPropType = require("ColorPropType");
+const NativeMethodsMixin = require("NativeMethodsMixin");
+const ReactNativeViewAttributes = require("ReactNativeViewAttributes");
+const Platform = require("Platform");
+const React = require("React");
+const PropTypes = require("prop-types");
+const StyleSheet = require("StyleSheet");
+const ViewPropTypes = require("ViewPropTypes");
+
+const createReactClass = require("create-react-class");
+const requireNativeComponent = require("requireNativeComponent");
+
+type Event = Object;
+
+/**
+ * A component used to select a single value from a range of values.
+ *
+ * ### Usage
+ *
+ * The example below shows how to use `Slider` to change
+ * a value used by `Text`. The value is stored using
+ * the state of the root component (`App`). The same component
+ * subscribes to the `onValueChange` of `Slider` and changes
+ * the value using `setState`.
+ *
+ *```
+ * import React from 'react';
+ * import { StyleSheet, Text, View, Slider } from 'react-native';
+ *
+ * export default class App extends React.Component {
+ * constructor(props) {
+ * super(props);
+ * this.state = {
+ * value: 50
+ * }
+ * }
+ *
+ * change(value) {
+ * this.setState(() => {
+ * return {
+ * value: parseFloat(value)
+ * };
+ * });
+ * }
+ *
+ * render() {
+ * const {value} = this.state;
+ * return (
+ *
+ * {String(value)}
+ *
+ *
+ * );
+ * }
+ * }
+ *
+ * const styles = StyleSheet.create({
+ * container: {
+ * flex: 1,
+ * flexDirection: 'column',
+ * justifyContent: 'center'
+ * },
+ * text: {
+ * fontSize: 50,
+ * textAlign: 'center'
+ * }
+ * });
+ *```
+ *
+ */
+const Slider = createReactClass({
+ displayName: "Slider",
+ mixins: [NativeMethodsMixin],
+
+ propTypes: {
+ ...ViewPropTypes,
+
+ /**
+ * Used to style and layout the `Slider`. See `StyleSheet.js` and
+ * `ViewStylePropTypes.js` for more info.
+ */
+ style: ViewPropTypes.style,
+
+ /**
+ * Initial value of the slider. The value should be between minimumValue
+ * and maximumValue, which default to 0 and 1 respectively.
+ * Default value is 0.
+ *
+ * *This is not a controlled component*, you don't need to update the
+ * value during dragging.
+ */
+ value: PropTypes.number,
+
+ /**
+ * Step value of the slider. The value should be
+ * between 0 and (maximumValue - minimumValue).
+ * Default value is 0.
+ */
+ step: PropTypes.number,
+
+ /**
+ * Initial minimum value of the slider. Default value is 0.
+ */
+ minimumValue: PropTypes.number,
+
+ /**
+ * Initial maximum value of the slider. Default value is 1.
+ */
+ maximumValue: PropTypes.number,
+
+ /**
+ * The color used for the track to the left of the button.
+ * Overrides the default blue gradient image on iOS.
+ */
+ minimumTrackTintColor: ColorPropType,
+
+ /**
+ * The color used for the track to the right of the button.
+ * Overrides the default blue gradient image on iOS.
+ */
+ maximumTrackTintColor: ColorPropType,
+
+ /**
+ * If true the user won't be able to move the slider.
+ * Default value is false.
+ */
+ disabled: PropTypes.bool,
+
+ /**
+ * Assigns a single image for the track. Only static images are supported.
+ * The center pixel of the image will be stretched to fill the track.
+ * @platform ios
+ */
+ trackImage: Image.propTypes.source,
+
+ /**
+ * Assigns a minimum track image. Only static images are supported. The
+ * rightmost pixel of the image will be stretched to fill the track.
+ * @platform ios
+ */
+ minimumTrackImage: Image.propTypes.source,
+
+ /**
+ * Assigns a maximum track image. Only static images are supported. The
+ * leftmost pixel of the image will be stretched to fill the track.
+ * @platform ios
+ */
+ maximumTrackImage: Image.propTypes.source,
+
+ /**
+ * Sets an image for the thumb. Only static images are supported.
+ * @platform ios
+ */
+ thumbImage: Image.propTypes.source,
+
+ /**
+ * Color of the foreground switch grip.
+ * @platform android
+ */
+ thumbTintColor: ColorPropType,
+
+ /**
+ * Callback continuously called while the user is dragging the slider.
+ */
+ onValueChange: PropTypes.func,
+
+ /**
+ * Callback that is called when the user releases the slider,
+ * regardless if the value has changed. The current value is passed
+ * as an argument to the callback handler.
+ */
+ onSlidingComplete: PropTypes.func,
+
+ /**
+ * Used to locate this view in UI automation tests.
+ */
+ testID: PropTypes.string
+ },
+
+ getDefaultProps: function(): any {
+ return {
+ disabled: false,
+ value: 0,
+ minimumValue: 0,
+ maximumValue: 1,
+ step: 0
+ };
+ },
+
+ viewConfig: {
+ uiViewClassName: "RCTSlider",
+ validAttributes: {
+ ...ReactNativeViewAttributes.RCTView,
+ value: true
+ }
+ },
+
+ render: function() {
+ const { style, onValueChange, onSlidingComplete, ...props } = this.props;
+ /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This comment
+ * suppresses an error found when Flow v0.54 was deployed. To see the error
+ * delete this comment and run Flow. */
+ props.style = [styles.slider, style];
+
+ /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This comment
+ * suppresses an error found when Flow v0.54 was deployed. To see the error
+ * delete this comment and run Flow. */
+ props.onValueChange =
+ onValueChange &&
+ ((event: Event) => {
+ let userEvent = true;
+ if (Platform.OS === "android") {
+ // On Android there's a special flag telling us the user is
+ // dragging the slider.
+ userEvent = event.nativeEvent.fromUser;
+ }
+ onValueChange && userEvent && onValueChange(event.nativeEvent.value);
+ });
+
+ /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This comment
+ * suppresses an error found when Flow v0.54 was deployed. To see the error
+ * delete this comment and run Flow. */
+ props.onChange = props.onValueChange;
+
+ /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This comment
+ * suppresses an error found when Flow v0.54 was deployed. To see the error
+ * delete this comment and run Flow. */
+ props.onSlidingComplete =
+ onSlidingComplete &&
+ ((event: Event) => {
+ onSlidingComplete && onSlidingComplete(event.nativeEvent.value);
+ });
+
+ return (
+ true}
+ onResponderTerminationRequest={() => false}
+ />
+ );
+ }
+});
+
+let styles;
+if (Platform.OS === "ios" || Platform.OS === "dom") {
+ styles = StyleSheet.create({
+ slider: {
+ height: 40
+ }
+ });
+} else {
+ styles = StyleSheet.create({
+ slider: {}
+ });
+}
+
+let options = {};
+if (Platform.OS === "android") {
+ options = {
+ nativeOnly: {
+ enabled: true
+ }
+ };
+}
+const RCTSlider = requireNativeComponent("RCTSlider", Slider, options);
+
+module.exports = Slider;
diff --git a/packages/react-native-dom/ReactDom/index.js b/packages/react-native-dom/ReactDom/index.js
index 5ce811220..855f50c51 100644
--- a/packages/react-native-dom/ReactDom/index.js
+++ b/packages/react-native-dom/ReactDom/index.js
@@ -75,6 +75,7 @@ const builtInNativeModules: any[] = [
import("RCTWebSocketModule"),
import("RCTAppState"),
import("RCTSafeAreaViewManager"),
+ import("RCTSliderManager"),
import("RCTSwitchManager"),
import("RCTStatusBarManager"),
import("RCTDeviceEventManager"),
diff --git a/packages/react-native-dom/ReactDom/views/Slider/RCTSlider.js b/packages/react-native-dom/ReactDom/views/Slider/RCTSlider.js
new file mode 100644
index 000000000..1c3ddea01
--- /dev/null
+++ b/packages/react-native-dom/ReactDom/views/Slider/RCTSlider.js
@@ -0,0 +1,128 @@
+/**
+ * @providesModule RCTSlider
+ * @flow
+ */
+
+import type { Frame } from "InternalLib";
+import RCTView from "RCTView";
+import type RCTBridge from "RCTBridge";
+import CustomElement from "CustomElement";
+import ColorArrayFromHexARGB from "ColorArrayFromHexARGB";
+import Slider from "rndom-slider";
+
+@CustomElement("rct-slider")
+class RCTSlider extends RCTView {
+ bridge: RCTBridge;
+ onValueChange: ?(payload: { value: boolean }) => void;
+ onSlidingComplete: ?(payload: { value: boolean }) => void;
+ childShadowRoot: ShadowRoot;
+ platformSlider: Slider;
+
+ constructor(bridge: RCTBridge) {
+ super(bridge);
+
+ this.style.contain = "size layout style";
+
+ this.platformSlider = new Slider();
+ this.platformSlider.addEventListener(
+ "valueChange",
+ this.handleValueChange.bind(this)
+ );
+ this.platformSlider.addEventListener(
+ "slidingComplete",
+ this.handleSlidingComplete.bind(this)
+ );
+
+ this.childShadowRoot = this.childContainer.attachShadow({ mode: "open" });
+ this.childShadowRoot.appendChild(this.platformSlider);
+ }
+
+ handleValueChange(event: {
+ preventDefault: Function,
+ detail: { value: boolean }
+ }) {
+ const {
+ detail: { value }
+ } = event;
+ event.preventDefault();
+ if (this.onValueChange) {
+ this.onValueChange({ value });
+ }
+ }
+
+ handleSlidingComplete(event: {
+ preventDefault: Function,
+ detail: { value: boolean }
+ }) {
+ const {
+ detail: { value }
+ } = event;
+ event.preventDefault();
+ if (this.onSlidingComplete) {
+ this.onSlidingComplete({ value });
+ }
+ }
+
+ get frame(): Frame {
+ return super.frame;
+ }
+
+ set frame(value: Frame) {
+ super.frame = value;
+
+ const { width, height } = value;
+ this.platformSlider.width = width;
+ this.platformSlider.height = height;
+ }
+
+ set disabled(value: boolean = false) {
+ super.disabled = value;
+ this.platformSlider.disabled = value;
+ }
+
+ set value(value: number = 0) {
+ this.platformSlider.value = value;
+ }
+
+ set step(value: number = 0) {
+ this.platformSlider.step = value;
+ }
+
+ set trackImage(value: mixed) {
+ this.platformSlider.trackImage = value;
+ }
+
+ set minimumTrackImage(value: mixed) {
+ this.platformSlider.minimumTrackImage = value;
+ }
+
+ set maximumTrackImage(value: mixed) {
+ this.platformSlider.maximumTrackImage = value;
+ }
+
+ set minimumValue(value: number) {
+ this.platformSlider.minimumValue = value;
+ }
+
+ set maximumValue(value: number) {
+ this.platformSlider.maximumValue = value;
+ }
+
+ set minimumTrackTintColor(value: string) {
+ this.platformSlider.minimumTrackTintColor = value;
+ }
+
+ set maximumTrackTintColor(value: string) {
+ this.platformSlider.maximumTrackTintColor = value;
+ }
+
+ set thumbImage(value: mixed) {
+ this.platformSlider.thumbImage = value;
+ }
+
+ set thumbTintColor(value: string) {
+ this.platformSlider.thumbTintColor = value;
+ }
+}
+
+export default RCTSlider;
diff --git a/packages/react-native-dom/ReactDom/views/Slider/RCTSliderManager.js b/packages/react-native-dom/ReactDom/views/Slider/RCTSliderManager.js
new file mode 100644
index 000000000..44dcbad5f
--- /dev/null
+++ b/packages/react-native-dom/ReactDom/views/Slider/RCTSliderManager.js
@@ -0,0 +1,97 @@
+/**
+ * @providesModule RCTSliderManager
+ * @flow
+ */
+
+import RCTBridge, {
+ RCTFunctionTypeNormal,
+ RCT_EXPORT_METHOD,
+ RCT_EXPORT_MODULE
+} from "RCTBridge";
+import RCTSlider from "RCTSlider";
+import type UIView from "UIView";
+import _RCTViewManager from "RCTViewManager";
+
+module.exports = (async () => {
+ const RCTViewManager = await _RCTViewManager;
+ const { RCT_EXPORT_VIEW_PROP, RCT_EXPORT_DIRECT_VIEW_PROPS } = RCTViewManager;
+
+ @RCT_EXPORT_MODULE("RCTSliderManager")
+ class RCTSliderManager extends RCTViewManager {
+ view(): UIView {
+ return new RCTSlider(this.bridge);
+ }
+
+ @RCT_EXPORT_VIEW_PROP("value", "number")
+ setValue(view: RCTSlider, value: number) {
+ view.value = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("step", "number")
+ setStep(view: RCTSlider, value: number) {
+ view.step = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("trackImage", "UIImage")
+ setTrackImage(view: RCTSlider, value: mixed) {
+ view.trackImage = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("minimumTrackImage", "UIImage")
+ setMinimumTrackImage(view: RCTSlider, value: mixed) {
+ view.minimumTrackImage = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("maximumTrackImage", "UIImage")
+ setMaximumTrackImage(view: RCTSlider, value: mixed) {
+ view.maximumTrackImage = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("minimumValue", "number")
+ setMinimumValue(view: RCTSlider, value: number) {
+ view.minimumValue = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("maximumValue", "number")
+ setMaximumValue(view: RCTSlider, value: number) {
+ view.maximumValue = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("minimumTrackTintColor", "color")
+ setMinimumTrackTintColor(view: RCTSlider, value: string) {
+ view.minimumTrackTintColor = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("maximumTrackTintColor", "color")
+ setMaximumTrackTintColor(view: RCTSlider, value: string) {
+ view.maximumTrackTintColor = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("onValueChange", "RCTBubblingEventBlock")
+ setOnValueChange(view: RCTSlider, value: Function) {
+ view.onValueChange = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("onSlidingComplete", "RCTBubblingEventBlock")
+ setOnSlidingComplete(view: RCTSlider, value: Function) {
+ view.onSlidingComplete = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("thumbImage", "UIImage")
+ setThumbImage(view: RCTSlider, value: mixed) {
+ view.thumbImage = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("disabled", "boolean")
+ setDisabled(view: RCTSlider, value: boolean) {
+ view.disabled = value;
+ }
+
+ @RCT_EXPORT_VIEW_PROP("thumbTintColor", "color")
+ setThumbTintColor(view: RCTSlider, value: string) {
+ view.thumbTintColor = value;
+ }
+ }
+
+ return RCTSliderManager;
+})();
diff --git a/packages/react-native-dom/flow-typed/npm/rndom-slider.js b/packages/react-native-dom/flow-typed/npm/rndom-slider.js
new file mode 100644
index 000000000..9b0b0509f
--- /dev/null
+++ b/packages/react-native-dom/flow-typed/npm/rndom-slider.js
@@ -0,0 +1,29 @@
+declare module "rndom-slider" {
+ declare type RNDomSliderEventListener = { handleEvent: Function } | Function;
+
+ declare class RNDomSlider extends HTMLElement {
+ disabled: boolean;
+ value: number;
+ maximumValue: number;
+ minimumValue: number;
+ step: number;
+ trackImage: mixed;
+ minimumTrackImage: mixed;
+ maximumTrackImage: mixed;
+ minimumTrackTintColor: string;
+ maximumTrackTintColor: string;
+ thumbImage: mixed;
+ thumbTintColor: string;
+ width: number;
+ height: number;
+
+ addEventListener(
+ type: string,
+ listener: RNDomSliderEventListener,
+ optionsOrUseCapture?: EventListenerOptionsOrUseCapture
+ ): void;
+ }
+
+ declare export default typeof RNDomSlider;
+ }
+
\ No newline at end of file
diff --git a/packages/react-native-dom/package.json b/packages/react-native-dom/package.json
index b6af6907c..6d7a11e1b 100644
--- a/packages/react-native-dom/package.json
+++ b/packages/react-native-dom/package.json
@@ -72,6 +72,7 @@
"pepjs": "^0.4.3",
"resize-observer-polyfill": "^1.5.0",
"rndom-redbox": "0.1.1",
+ "rndom-slider": "0.1.1",
"rndom-switch": "0.1.1",
"tinycolor2": "^1.4.1",
"wait-port": "^0.2.2",
diff --git a/packages/rndom-slider/.babelrc b/packages/rndom-slider/.babelrc
new file mode 100644
index 000000000..930a0b831
--- /dev/null
+++ b/packages/rndom-slider/.babelrc
@@ -0,0 +1,19 @@
+{
+ "plugins": [
+ [
+ "babel-plugin-transform-builtin-classes",
+ {
+ "globals": ["HTMLElement"]
+ }
+ ],
+ "external-helpers"
+ ],
+ "presets": [
+ [
+ "env",
+ {
+ "modules": false
+ }
+ ]
+ ]
+}
diff --git a/packages/rndom-slider/.gitignore b/packages/rndom-slider/.gitignore
new file mode 100644
index 000000000..25b80d3d2
--- /dev/null
+++ b/packages/rndom-slider/.gitignore
@@ -0,0 +1,6 @@
+.DS_Store
+node_modules
+public/bundle.*
+lib
+package-lock.json
+yarn.lock
\ No newline at end of file
diff --git a/packages/rndom-slider/.npmignore b/packages/rndom-slider/.npmignore
new file mode 100644
index 000000000..99f9a9589
--- /dev/null
+++ b/packages/rndom-slider/.npmignore
@@ -0,0 +1 @@
+.babelrc
\ No newline at end of file
diff --git a/packages/rndom-slider/README.md b/packages/rndom-slider/README.md
new file mode 100644
index 000000000..68e5b2bb5
--- /dev/null
+++ b/packages/rndom-slider/README.md
@@ -0,0 +1 @@
+# React Native DOM Slider
diff --git a/packages/rndom-slider/package.json b/packages/rndom-slider/package.json
new file mode 100644
index 000000000..37943f1cd
--- /dev/null
+++ b/packages/rndom-slider/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "rndom-slider",
+ "version": "0.1.1",
+ "license": "MIT",
+ "author": {
+ "name": "Vincent Riemer",
+ "email": "vincentriemer+rndom@gmail.com",
+ "url": "https://vincentriemer.com"
+ },
+ "files": ["lib"],
+ "main": "lib/rndom-slider.js",
+ "module": "lib/rndom-slider.m.js",
+ "scripts": {
+ "precompile": "shx rm -rf lib",
+ "compile": "rollup -c",
+ "dev": "serve public & rollup -c -w",
+ "prepublishOnly": "yarn compile",
+ "start": "serve public",
+ "test": "shx echo 'no tests written :('"
+ },
+ "devDependencies": {
+ "babel-core": "^6.26.3",
+ "babel-plugin-external-helpers": "^6.22.0",
+ "babel-plugin-transform-builtin-classes": "^0.6.1",
+ "babel-preset-env": "^1.6.1",
+ "color": "^3.0.0",
+ "less": "^3.0.4",
+ "rollup": "^0.58.1",
+ "rollup-plugin-babel": "^3.0.4",
+ "rollup-plugin-buble": "^0.19.2",
+ "rollup-plugin-commonjs": "^9.1.0",
+ "rollup-plugin-node-resolve": "^3.0.3",
+ "rollup-plugin-svelte": "^4.0.0",
+ "rollup-plugin-uglify": "^3.0.0",
+ "serve": "^6.5.1",
+ "svelte": "^2.0.0"
+ },
+ "umd:main": "lib/rndom-slider.umd.js"
+}
diff --git a/packages/rndom-slider/public/global.css b/packages/rndom-slider/public/global.css
new file mode 100644
index 000000000..e695a2647
--- /dev/null
+++ b/packages/rndom-slider/public/global.css
@@ -0,0 +1,66 @@
+html,
+body {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+body {
+ color: #333;
+ margin: 0;
+ padding: 8px;
+ box-sizing: border-box;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+}
+
+a {
+ color: rgb(0, 100, 200);
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a:visited {
+ color: rgb(0, 80, 160);
+}
+
+label {
+ display: block;
+}
+
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ padding: 0.4em;
+ margin: 0 0 0.5em 0;
+ box-sizing: border-box;
+ border: 1px solid #ccc;
+ border-radius: 2px;
+}
+
+input:disabled {
+ color: #ccc;
+}
+
+input[type="range"] {
+ height: 0;
+}
+
+button {
+ background-color: #f4f4f4;
+ outline: none;
+}
+
+button:active {
+ background-color: #ddd;
+}
+
+button:focus {
+ border-color: #666;
+}
diff --git a/packages/rndom-slider/public/index.html b/packages/rndom-slider/public/index.html
new file mode 100644
index 000000000..48184347a
--- /dev/null
+++ b/packages/rndom-slider/public/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ RNDom Slider
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/rndom-slider/rollup.config.js b/packages/rndom-slider/rollup.config.js
new file mode 100644
index 000000000..3431b79f2
--- /dev/null
+++ b/packages/rndom-slider/rollup.config.js
@@ -0,0 +1,80 @@
+import svelte from "rollup-plugin-svelte";
+import resolve from "rollup-plugin-node-resolve";
+import commonjs from "rollup-plugin-commonjs";
+import babel from "rollup-plugin-babel";
+import uglify from "rollup-plugin-uglify";
+import less from "less";
+
+import pjson from "./package.json";
+
+const production = true; //!process.env.ROLLUP_WATCH;
+
+const baseConfig = {
+ input: "src/index.svelte",
+ plugins: [
+ svelte({
+ // enable run-time checks when not in production
+ dev: !production,
+ customElement: true,
+ preprocess: {
+ style: ({ filename, content, attributes }) => {
+ if (attributes.type !== "text/less") {
+ return null;
+ }
+
+ return less
+ .render(content, {
+ filename,
+ sourceMap: {}
+ })
+ .then(({ css, map }) => ({ code: css, map }));
+ }
+ }
+ }),
+
+ // If you have external dependencies installed from
+ // npm, you'll most likely need these plugins. In
+ // some cases you'll need additional configuration —
+ // consult the documentation for details:
+ // https://github.com/rollup/rollup-plugin-commonjs
+ resolve(),
+ commonjs(),
+
+ // If we're building for production (npm run build
+ // instead of npm run dev), transpile and minify
+ production && babel({ exclude: "node_modules/**" }),
+ production && uglify()
+ ]
+};
+
+const baseOutput = {
+ sourcemap: true,
+ name: "RNDomSlider"
+};
+
+const entryPoints = ["main", "umd:main", "module"];
+
+const formats = {
+ main: "cjs",
+ "umd:main": "umd",
+ module: "es"
+};
+
+const createConfig = (format, file) => ({
+ ...baseConfig,
+ output: {
+ ...baseOutput,
+ format,
+ file
+ }
+});
+
+export default entryPoints
+ .map((entry) => {
+ const path = pjson[entry];
+ if (path) {
+ return createConfig(formats[entry], path);
+ }
+ return null;
+ })
+ .concat([createConfig("iife", "public/bundle.js")]);
diff --git a/packages/rndom-slider/src/index.svelte b/packages/rndom-slider/src/index.svelte
new file mode 100644
index 000000000..fa499bc22
--- /dev/null
+++ b/packages/rndom-slider/src/index.svelte
@@ -0,0 +1,238 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 4d9928fc3..bb2b9edc3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2281,7 +2281,7 @@ color-convert@^0.5.0:
version "0.5.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd"
-color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
dependencies:
@@ -2297,6 +2297,13 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
+color-string@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
color-support@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
@@ -2308,6 +2315,13 @@ color@0.8.x:
color-convert "^0.5.0"
color-string "^0.3.0"
+color@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a"
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
colornames@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/colornames/-/colornames-0.0.2.tgz#d811fd6c84f59029499a8ac4436202935b92be31"
@@ -3201,7 +3215,7 @@ envinfo@^3.0.0:
os-name "^2.0.1"
which "^1.2.14"
-errno@~0.1.7:
+errno@^0.1.1, errno@~0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
dependencies:
@@ -4505,6 +4519,10 @@ image-size@^0.6.0:
version "0.6.2"
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.2.tgz#8ee316d4298b028b965091b673d5f1537adee5b4"
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -4660,6 +4678,10 @@ is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+is-arrayish@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.1.tgz#c2dfc386abaa0c3e33c48db3fe87059e69065efd"
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -5541,6 +5563,19 @@ lerna@^2.4.0:
write-pkg "^3.1.0"
yargs "^8.0.2"
+less@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/less/-/less-3.0.4.tgz#d27dcedbac96031c9e7b76f1da1e4b7d83760814"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ mime "^1.4.1"
+ mkdirp "^0.5.0"
+ promise "^7.1.1"
+ request "^2.83.0"
+ source-map "~0.6.0"
+
leven@2.1.0, leven@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
@@ -6202,7 +6237,7 @@ mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-mime@^1.2.11, mime@^1.3.4:
+mime@^1.2.11, mime@^1.3.4, mime@^1.4.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
@@ -7406,7 +7441,7 @@ replace-ext@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
-request@2.x.x, request@^2.72.0, request@^2.79.0:
+request@2.x.x, request@^2.72.0, request@^2.79.0, request@^2.83.0:
version "2.87.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
dependencies:
@@ -7849,6 +7884,12 @@ simple-plist@^0.2.1:
bplist-parser "0.1.1"
plist "2.0.1"
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ dependencies:
+ is-arrayish "^0.3.1"
+
sinon@^1.9.1:
version "1.17.7"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf"
@@ -7956,7 +7997,7 @@ source-map@~0.2.0:
dependencies:
amdefine ">=0.0.4"
-source-map@~0.6.1:
+source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"