diff --git a/.gitignore b/.gitignore index 709fd09..0e25010 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ !/.eslintrc.json !/.travis.yml package-lock.json +yarn.lock /bower_components/ /node_modules/ /output/ diff --git a/bower.json b/bower.json index 3088ad9..e482e43 100644 --- a/bower.json +++ b/bower.json @@ -13,5 +13,8 @@ "output", "bower.json", "package.json" - ] + ], + "dependencies": { + "purescript-web-dom": "^1.0.0" + } } diff --git a/package.json b/package.json index 02e36ea..7d759c8 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,12 @@ "build": "eslint src && pulp build -- --censor-lib --strict" }, "devDependencies": { - "eslint": "^4.19.1", - "pulp": "^12.2.0", - "purescript-psa": "^0.6.0", + "eslint": "^5.2.0", + "pulp": "^12.3.0", + "purescript-psa": "^0.7.2", "rimraf": "^2.6.2" + }, + "dependencies": { + "purescript": "^0.12.0" } } diff --git a/src/Web/CSSOM.js b/src/Web/CSSOM.js new file mode 100644 index 0000000..c7089bc --- /dev/null +++ b/src/Web/CSSOM.js @@ -0,0 +1,8 @@ +// Web.CSSOM +"use strict"; + +exports.getStyleSheets = function(doc) { + return function() { + return doc.styleSheets; + }; +}; diff --git a/src/Web/CSSOM.purs b/src/Web/CSSOM.purs new file mode 100644 index 0000000..26c471a --- /dev/null +++ b/src/Web/CSSOM.purs @@ -0,0 +1,9 @@ +module Web.CSSOM + ( getStyleSheets + ) where + +import Effect (Effect) +import Web.CSSOM.Internal.Types (StyleSheetList) +import Web.DOM.Document (Document) + +foreign import getStyleSheets :: Document -> Effect StyleSheetList diff --git a/src/Web/CSSOM/CSSStyleSheet.js b/src/Web/CSSOM/CSSStyleSheet.js new file mode 100644 index 0000000..bc04cc0 --- /dev/null +++ b/src/Web/CSSOM/CSSStyleSheet.js @@ -0,0 +1,31 @@ +"use strict"; + +var getProp = function(name) { + return function(sheet) { + return sheet[name]; + }; +}; + +exports.disabled = getProp("disabled"); +exports._href = getProp("href"); +exports._ownerNode = getProp("ownerNode"); +exports._parentStyleSheet = getProp("parentStyleSheet"); +exports._title = getProp("title"); +exports._type = getProp("type"); + +exports.setDisabled = function(bool) { + return function(sheet) { + return function() { + sheet.disabled = bool; + return {}; + }; + }; +}; + +exports.toggleDisabled = function(sheet) { + return function() { + var bool = !sheet.disabled; + sheet.disabled = bool; + return bool; + }; +}; diff --git a/src/Web/CSSOM/CSSStyleSheet.purs b/src/Web/CSSOM/CSSStyleSheet.purs new file mode 100644 index 0000000..3d6c732 --- /dev/null +++ b/src/Web/CSSOM/CSSStyleSheet.purs @@ -0,0 +1,47 @@ +module Web.DOM.CSSStyleSheet + ( module Exports + , disabled + , setDisabled + , toggleDisabled + , href + , ownerNode + , parentStyleSheet + , title + , typeString + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Web.CSSOM.Internal.Types (CSSStyleSheet) as Exports +import Web.CSSOM.Internal.Types (CSSStyleSheet) +import Web.DOM.Internal.Types (Element) + +foreign import disabled :: CSSStyleSheet -> Boolean + +foreign import setDisabled :: Boolean -> CSSStyleSheet -> Effect Unit + +foreign import toggleDisabled :: CSSStyleSheet -> Effect Boolean + +href :: CSSStyleSheet -> Maybe String +href = toMaybe <<< _href + +ownerNode :: CSSStyleSheet -> Maybe Element +ownerNode = toMaybe <<< _ownerNode + +parentStyleSheet :: CSSStyleSheet -> Maybe CSSStyleSheet +parentStyleSheet = toMaybe <<< _parentStyleSheet + +title :: CSSStyleSheet -> Maybe String +title = toMaybe <<< _title + +typeString :: CSSStyleSheet -> Maybe String +typeString = toMaybe <<< _type + +foreign import _href :: CSSStyleSheet -> Nullable String +foreign import _ownerNode :: CSSStyleSheet -> Nullable Element +foreign import _parentStyleSheet :: CSSStyleSheet -> Nullable CSSStyleSheet +foreign import _title :: CSSStyleSheet -> Nullable String +foreign import _type :: CSSStyleSheet -> Nullable String diff --git a/src/Web/CSSOM/Internal/Types.purs b/src/Web/CSSOM/Internal/Types.purs new file mode 100644 index 0000000..8f97417 --- /dev/null +++ b/src/Web/CSSOM/Internal/Types.purs @@ -0,0 +1,4 @@ +module Web.CSSOM.Internal.Types where + +foreign import data CSSStyleSheet :: Type +foreign import data StyleSheetList :: Type diff --git a/src/Web/CSSOM/StyleSheetList.js b/src/Web/CSSOM/StyleSheetList.js new file mode 100644 index 0000000..67d5062 --- /dev/null +++ b/src/Web/CSSOM/StyleSheetList.js @@ -0,0 +1,21 @@ +"use strict"; + +exports.length = function (list) { + return function () { + return list.length; + }; +}; + +exports.toArray = function (list) { + return function () { + return Array.prototype.slice.call(list); + }; +}; + +exports._item = function(index) { + return function(list) { + return function() { + return list.item(index); + }; + }; +}; diff --git a/src/Web/CSSOM/StyleSheetList.purs b/src/Web/CSSOM/StyleSheetList.purs new file mode 100644 index 0000000..1b8ce80 --- /dev/null +++ b/src/Web/CSSOM/StyleSheetList.purs @@ -0,0 +1,27 @@ +module Web.DOM.StyleSheetList + ( module Exports + , length + , item + , toArray + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Web.CSSOM.Internal.Types (CSSStyleSheet, StyleSheetList) as Exports +import Web.CSSOM.Internal.Types (CSSStyleSheet, StyleSheetList) + +-- | The number of items in a StyleSheetList. +foreign import length :: StyleSheetList -> Effect Int + +-- | The elements of a NodeList represented in an array. +foreign import toArray :: StyleSheetList -> Effect (Array CSSStyleSheet) + +-- | The item in a StyleSheetList at the specified index, or Nothing if no such +-- | node exists. +item :: Int -> StyleSheetList -> Effect (Maybe CSSStyleSheet) +item i = map toMaybe <<< _item i + +foreign import _item :: Int -> StyleSheetList -> Effect (Nullable CSSStyleSheet)