ghcjs-dom 0.9.2.0 → 0.9.9.2
raw patch · 4 files changed
Files
- ghcjs-dom.cabal +649/−627
- src/GHCJS/DOM/Debug.hs +179/−0
- src/GHCJS/DOM/Debug/Internal.hs +71/−0
- src/GHCJS/DOM/Document.hs +102/−0
ghcjs-dom.cabal view
@@ -1,627 +1,649 @@-name: ghcjs-dom-version: 0.9.2.0-cabal-version: >=1.24-build-type: Simple-license: MIT-license-file: LICENSE-maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>-synopsis: DOM library that supports both GHCJS and GHC-description: Documentent Object Model (DOM) functions that work with- GHCJS, but can also be used with GHC and a Browser.-author: Hamish Mackenzie-data-dir: ""-category: Web--Source-Repository head- type: git- location: https://github.com/ghcjs/ghcjs-dom- subdir: ghcjs-dom--flag jsffi- description: Use JavaScriptFFI extension for GHCJS JavaScript output- default: True- manual: True--library- build-depends: base <5,- transformers >=0.2 && <0.6,- text >= 0.11.0.6 && < 1.3-- default-language: Haskell2010-- exposed: True- buildable: True-- if (impl(ghcjs) && flag(jsffi))- build-depends: ghcjs-dom-jsffi ==0.9.2.0- else- build-depends: ghcjs-dom-jsaddle ==0.9.2.0-- reexported-modules:- GHCJS.DOM- , GHCJS.DOM.Types- , GHCJS.DOM.EventM- , GHCJS.DOM.EventTargetClosures- -- (cd src/JSDOM/Generated && for a in *.hs; do echo " , GHCJS.DOM.${a%.*}"; done | pbcopy)- , GHCJS.DOM.ANGLEInstancedArrays- , GHCJS.DOM.AbstractWorker- , GHCJS.DOM.AnalyserNode- , GHCJS.DOM.Animatable- , GHCJS.DOM.Animation- , GHCJS.DOM.AnimationEvent- , GHCJS.DOM.ApplePayError- , GHCJS.DOM.ApplePayPaymentAuthorizedEvent- , GHCJS.DOM.ApplePayPaymentMethodSelectedEvent- , GHCJS.DOM.ApplePaySession- , GHCJS.DOM.ApplePayShippingContactSelectedEvent- , GHCJS.DOM.ApplePayShippingMethodSelectedEvent- , GHCJS.DOM.ApplePayValidateMerchantEvent- , GHCJS.DOM.ApplicationCache- , GHCJS.DOM.Attr- , GHCJS.DOM.AudioBuffer- , GHCJS.DOM.AudioBufferCallback- , GHCJS.DOM.AudioBufferSourceNode- , GHCJS.DOM.AudioContext- , GHCJS.DOM.AudioDestinationNode- , GHCJS.DOM.AudioListener- , GHCJS.DOM.AudioNode- , GHCJS.DOM.AudioParam- , GHCJS.DOM.AudioProcessingEvent- , GHCJS.DOM.AudioTrack- , GHCJS.DOM.AudioTrackList- , GHCJS.DOM.AutocompleteErrorEvent- , GHCJS.DOM.BarProp- , GHCJS.DOM.BasicCredential- , GHCJS.DOM.BeforeLoadEvent- , GHCJS.DOM.BeforeUnloadEvent- , GHCJS.DOM.BiquadFilterNode- , GHCJS.DOM.Blob- , GHCJS.DOM.BlobCallback- , GHCJS.DOM.Body- , GHCJS.DOM.ByteLengthQueuingStrategy- , GHCJS.DOM.CSS- , GHCJS.DOM.CSSFontFaceLoadEvent- , GHCJS.DOM.CSSFontFaceRule- , GHCJS.DOM.CSSImportRule- , GHCJS.DOM.CSSKeyframeRule- , GHCJS.DOM.CSSKeyframesRule- , GHCJS.DOM.CSSMediaRule- , GHCJS.DOM.CSSNamespaceRule- , GHCJS.DOM.CSSPageRule- , GHCJS.DOM.CSSPrimitiveValue- , GHCJS.DOM.CSSRule- , GHCJS.DOM.CSSRuleList- , GHCJS.DOM.CSSStyleDeclaration- , GHCJS.DOM.CSSStyleRule- , GHCJS.DOM.CSSStyleSheet- , GHCJS.DOM.CSSSupportsRule- , GHCJS.DOM.CSSValue- , GHCJS.DOM.CSSValueList- , GHCJS.DOM.CanvasCaptureMediaStreamTrack- , GHCJS.DOM.CanvasGradient- , GHCJS.DOM.CanvasPath- , GHCJS.DOM.CanvasRenderingContext2D- , GHCJS.DOM.CharacterData- , GHCJS.DOM.ChildNode- , GHCJS.DOM.ClipboardEvent- , GHCJS.DOM.CloseEvent- , GHCJS.DOM.CommandLineAPIHost- , GHCJS.DOM.Comment- , GHCJS.DOM.CompositionEvent- , GHCJS.DOM.ConvolverNode- , GHCJS.DOM.Coordinates- , GHCJS.DOM.CountQueuingStrategy- , GHCJS.DOM.Counter- , GHCJS.DOM.Crypto- , GHCJS.DOM.CryptoKey- , GHCJS.DOM.CustomElementRegistry- , GHCJS.DOM.CustomEvent- , GHCJS.DOM.DOMError- , GHCJS.DOM.DOMException- , GHCJS.DOM.DOMImplementation- , GHCJS.DOM.DOMNamedFlowCollection- , GHCJS.DOM.DOMParser- , GHCJS.DOM.DOMPoint- , GHCJS.DOM.DOMPointReadOnly- , GHCJS.DOM.DOMRect- , GHCJS.DOM.DOMRectReadOnly- , GHCJS.DOM.DOMStringList- , GHCJS.DOM.DOMStringMap- , GHCJS.DOM.DOMTokenList- , GHCJS.DOM.DataCue- , GHCJS.DOM.DataTransfer- , GHCJS.DOM.DataTransferItem- , GHCJS.DOM.DataTransferItemList- , GHCJS.DOM.Database- , GHCJS.DOM.DatabaseCallback- , GHCJS.DOM.DedicatedWorkerGlobalScope- , GHCJS.DOM.DelayNode- , GHCJS.DOM.DeviceMotionEvent- , GHCJS.DOM.DeviceOrientationEvent- , GHCJS.DOM.DeviceProximityEvent- , GHCJS.DOM.Document- , GHCJS.DOM.DocumentAndElementEventHandlers- , GHCJS.DOM.DocumentFragment- , GHCJS.DOM.DocumentOrShadowRoot- , GHCJS.DOM.DocumentTimeline- , GHCJS.DOM.DocumentType- , GHCJS.DOM.DynamicsCompressorNode- , GHCJS.DOM.EXTBlendMinMax- , GHCJS.DOM.EXTTextureFilterAnisotropic- , GHCJS.DOM.EXTsRGB- , GHCJS.DOM.Element- , GHCJS.DOM.ElementCSSInlineStyle- , GHCJS.DOM.Enums- , GHCJS.DOM.ErrorEvent- , GHCJS.DOM.Event- , GHCJS.DOM.EventListener- , GHCJS.DOM.EventSource- , GHCJS.DOM.EventTarget- , GHCJS.DOM.File- , GHCJS.DOM.FileError- , GHCJS.DOM.FileException- , GHCJS.DOM.FileList- , GHCJS.DOM.FileReader- , GHCJS.DOM.FileReaderSync- , GHCJS.DOM.FocusEvent- , GHCJS.DOM.FontFace- , GHCJS.DOM.FontFaceSet- , GHCJS.DOM.FormData- , GHCJS.DOM.GainNode- , GHCJS.DOM.Gamepad- , GHCJS.DOM.GamepadButton- , GHCJS.DOM.GamepadEvent- , GHCJS.DOM.Geolocation- , GHCJS.DOM.Geoposition- , GHCJS.DOM.GlobalCrypto- , GHCJS.DOM.GlobalEventHandlers- , GHCJS.DOM.GlobalPerformance- , GHCJS.DOM.HTMLAllCollection- , GHCJS.DOM.HTMLAnchorElement- , GHCJS.DOM.HTMLAppletElement- , GHCJS.DOM.HTMLAreaElement- , GHCJS.DOM.HTMLAttachmentElement- , GHCJS.DOM.HTMLBRElement- , GHCJS.DOM.HTMLBaseElement- , GHCJS.DOM.HTMLBodyElement- , GHCJS.DOM.HTMLButtonElement- , GHCJS.DOM.HTMLCanvasElement- , GHCJS.DOM.HTMLCollection- , GHCJS.DOM.HTMLDListElement- , GHCJS.DOM.HTMLDataElement- , GHCJS.DOM.HTMLDataListElement- , GHCJS.DOM.HTMLDetailsElement- , GHCJS.DOM.HTMLDirectoryElement- , GHCJS.DOM.HTMLDivElement- , GHCJS.DOM.HTMLDocument- , GHCJS.DOM.HTMLElement- , GHCJS.DOM.HTMLEmbedElement- , GHCJS.DOM.HTMLFieldSetElement- , GHCJS.DOM.HTMLFontElement- , GHCJS.DOM.HTMLFormControlsCollection- , GHCJS.DOM.HTMLFormElement- , GHCJS.DOM.HTMLFrameElement- , GHCJS.DOM.HTMLFrameSetElement- , GHCJS.DOM.HTMLHRElement- , GHCJS.DOM.HTMLHeadElement- , GHCJS.DOM.HTMLHeadingElement- , GHCJS.DOM.HTMLHtmlElement- , GHCJS.DOM.HTMLHyperlinkElementUtils- , GHCJS.DOM.HTMLIFrameElement- , GHCJS.DOM.HTMLImageElement- , GHCJS.DOM.HTMLInputElement- , GHCJS.DOM.HTMLKeygenElement- , GHCJS.DOM.HTMLLIElement- , GHCJS.DOM.HTMLLabelElement- , GHCJS.DOM.HTMLLegendElement- , GHCJS.DOM.HTMLLinkElement- , GHCJS.DOM.HTMLMapElement- , GHCJS.DOM.HTMLMarqueeElement- , GHCJS.DOM.HTMLMediaElement- , GHCJS.DOM.HTMLMenuElement- , GHCJS.DOM.HTMLMetaElement- , GHCJS.DOM.HTMLMeterElement- , GHCJS.DOM.HTMLModElement- , GHCJS.DOM.HTMLOListElement- , GHCJS.DOM.HTMLObjectElement- , GHCJS.DOM.HTMLOptGroupElement- , GHCJS.DOM.HTMLOptionElement- , GHCJS.DOM.HTMLOptionsCollection- , GHCJS.DOM.HTMLOutputElement- , GHCJS.DOM.HTMLParagraphElement- , GHCJS.DOM.HTMLParamElement- , GHCJS.DOM.HTMLPreElement- , GHCJS.DOM.HTMLProgressElement- , GHCJS.DOM.HTMLQuoteElement- , GHCJS.DOM.HTMLScriptElement- , GHCJS.DOM.HTMLSelectElement- , GHCJS.DOM.HTMLSlotElement- , GHCJS.DOM.HTMLSourceElement- , GHCJS.DOM.HTMLStyleElement- , GHCJS.DOM.HTMLTableCaptionElement- , GHCJS.DOM.HTMLTableCellElement- , GHCJS.DOM.HTMLTableColElement- , GHCJS.DOM.HTMLTableElement- , GHCJS.DOM.HTMLTableRowElement- , GHCJS.DOM.HTMLTableSectionElement- , GHCJS.DOM.HTMLTemplateElement- , GHCJS.DOM.HTMLTextAreaElement- , GHCJS.DOM.HTMLTimeElement- , GHCJS.DOM.HTMLTitleElement- , GHCJS.DOM.HTMLTrackElement- , GHCJS.DOM.HTMLUListElement- , GHCJS.DOM.HTMLVideoElement- , GHCJS.DOM.HashChangeEvent- , GHCJS.DOM.Headers- , GHCJS.DOM.History- , GHCJS.DOM.IDBCursor- , GHCJS.DOM.IDBCursorWithValue- , GHCJS.DOM.IDBDatabase- , GHCJS.DOM.IDBFactory- , GHCJS.DOM.IDBIndex- , GHCJS.DOM.IDBKeyRange- , GHCJS.DOM.IDBObjectStore- , GHCJS.DOM.IDBOpenDBRequest- , GHCJS.DOM.IDBRequest- , GHCJS.DOM.IDBTransaction- , GHCJS.DOM.IDBVersionChangeEvent- , GHCJS.DOM.ImageData- , GHCJS.DOM.InputEvent- , GHCJS.DOM.InspectorFrontendHost- , GHCJS.DOM.IntersectionObserver- , GHCJS.DOM.IntersectionObserverCallback- , GHCJS.DOM.IntersectionObserverEntry- , GHCJS.DOM.KeyboardEvent- , GHCJS.DOM.KeyframeEffect- , GHCJS.DOM.Location- , GHCJS.DOM.MediaController- , GHCJS.DOM.MediaControlsHost- , GHCJS.DOM.MediaDeviceInfo- , GHCJS.DOM.MediaDevices- , GHCJS.DOM.MediaElementAudioSourceNode- , GHCJS.DOM.MediaEncryptedEvent- , GHCJS.DOM.MediaError- , GHCJS.DOM.MediaKeyMessageEvent- , GHCJS.DOM.MediaKeySession- , GHCJS.DOM.MediaKeyStatusMap- , GHCJS.DOM.MediaKeySystemAccess- , GHCJS.DOM.MediaKeys- , GHCJS.DOM.MediaList- , GHCJS.DOM.MediaQueryList- , GHCJS.DOM.MediaQueryListListener- , GHCJS.DOM.MediaRemoteControls- , GHCJS.DOM.MediaSession- , GHCJS.DOM.MediaSource- , GHCJS.DOM.MediaStream- , GHCJS.DOM.MediaStreamAudioDestinationNode- , GHCJS.DOM.MediaStreamAudioSourceNode- , GHCJS.DOM.MediaStreamEvent- , GHCJS.DOM.MediaStreamTrack- , GHCJS.DOM.MediaStreamTrackEvent- , GHCJS.DOM.MessageChannel- , GHCJS.DOM.MessageEvent- , GHCJS.DOM.MessagePort- , GHCJS.DOM.MimeType- , GHCJS.DOM.MimeTypeArray- , GHCJS.DOM.MouseEvent- , GHCJS.DOM.MutationEvent- , GHCJS.DOM.MutationObserver- , GHCJS.DOM.MutationRecord- , GHCJS.DOM.NamedNodeMap- , GHCJS.DOM.Navigator- , GHCJS.DOM.NavigatorConcurrentHardware- , GHCJS.DOM.NavigatorID- , GHCJS.DOM.NavigatorLanguage- , GHCJS.DOM.NavigatorOnLine- , GHCJS.DOM.NavigatorUserMediaError- , GHCJS.DOM.NavigatorUserMediaErrorCallback- , GHCJS.DOM.NavigatorUserMediaSuccessCallback- , GHCJS.DOM.Node- , GHCJS.DOM.NodeFilter- , GHCJS.DOM.NodeIterator- , GHCJS.DOM.NodeList- , GHCJS.DOM.NonDocumentTypeChildNode- , GHCJS.DOM.NonElementParentNode- , GHCJS.DOM.Notification- , GHCJS.DOM.NotificationPermissionCallback- , GHCJS.DOM.OESStandardDerivatives- , GHCJS.DOM.OESTextureHalfFloat- , GHCJS.DOM.OESVertexArrayObject- , GHCJS.DOM.OfflineAudioCompletionEvent- , GHCJS.DOM.OfflineAudioContext- , GHCJS.DOM.OscillatorNode- , GHCJS.DOM.OverconstrainedError- , GHCJS.DOM.OverconstrainedErrorEvent- , GHCJS.DOM.OverflowEvent- , GHCJS.DOM.PageTransitionEvent- , GHCJS.DOM.PannerNode- , GHCJS.DOM.ParentNode- , GHCJS.DOM.PasswordCredential- , GHCJS.DOM.Path2D- , GHCJS.DOM.Performance- , GHCJS.DOM.PerformanceEntry- , GHCJS.DOM.PerformanceNavigation- , GHCJS.DOM.PerformanceObserver- , GHCJS.DOM.PerformanceObserverCallback- , GHCJS.DOM.PerformanceObserverEntryList- , GHCJS.DOM.PerformanceResourceTiming- , GHCJS.DOM.PerformanceTiming- , GHCJS.DOM.Plugin- , GHCJS.DOM.PluginArray- , GHCJS.DOM.PopStateEvent- , GHCJS.DOM.PositionCallback- , GHCJS.DOM.PositionError- , GHCJS.DOM.PositionErrorCallback- , GHCJS.DOM.ProcessingInstruction- , GHCJS.DOM.ProgressEvent- , GHCJS.DOM.PromiseRejectionEvent- , GHCJS.DOM.QuickTimePluginReplacement- , GHCJS.DOM.RGBColor- , GHCJS.DOM.RTCDTMFSender- , GHCJS.DOM.RTCDTMFToneChangeEvent- , GHCJS.DOM.RTCDataChannel- , GHCJS.DOM.RTCDataChannelEvent- , GHCJS.DOM.RTCIceCandidate- , GHCJS.DOM.RTCIceCandidateEvent- , GHCJS.DOM.RTCIceTransport- , GHCJS.DOM.RTCPeerConnection- , GHCJS.DOM.RTCPeerConnectionIceEvent- , GHCJS.DOM.RTCRtpReceiver- , GHCJS.DOM.RTCRtpSender- , GHCJS.DOM.RTCRtpTransceiver- , GHCJS.DOM.RTCSessionDescription- , GHCJS.DOM.RTCTrackEvent- , GHCJS.DOM.RadioNodeList- , GHCJS.DOM.Range- , GHCJS.DOM.ReadableByteStreamController- , GHCJS.DOM.ReadableStream- , GHCJS.DOM.ReadableStreamBYOBReader- , GHCJS.DOM.ReadableStreamBYOBRequest- , GHCJS.DOM.ReadableStreamDefaultController- , GHCJS.DOM.ReadableStreamDefaultReader- , GHCJS.DOM.ReadableStreamSource- , GHCJS.DOM.Rect- , GHCJS.DOM.Request- , GHCJS.DOM.RequestAnimationFrameCallback- , GHCJS.DOM.Response- , GHCJS.DOM.SQLError- , GHCJS.DOM.SQLException- , GHCJS.DOM.SQLResultSet- , GHCJS.DOM.SQLResultSetRowList- , GHCJS.DOM.SQLStatementCallback- , GHCJS.DOM.SQLStatementErrorCallback- , GHCJS.DOM.SQLTransaction- , GHCJS.DOM.SQLTransactionCallback- , GHCJS.DOM.SQLTransactionErrorCallback- , GHCJS.DOM.SVGAElement- , GHCJS.DOM.SVGAltGlyphElement- , GHCJS.DOM.SVGAngle- , GHCJS.DOM.SVGAnimatedAngle- , GHCJS.DOM.SVGAnimatedBoolean- , GHCJS.DOM.SVGAnimatedEnumeration- , GHCJS.DOM.SVGAnimatedInteger- , GHCJS.DOM.SVGAnimatedLength- , GHCJS.DOM.SVGAnimatedLengthList- , GHCJS.DOM.SVGAnimatedNumber- , GHCJS.DOM.SVGAnimatedNumberList- , GHCJS.DOM.SVGAnimatedPreserveAspectRatio- , GHCJS.DOM.SVGAnimatedRect- , GHCJS.DOM.SVGAnimatedString- , GHCJS.DOM.SVGAnimatedTransformList- , GHCJS.DOM.SVGAnimationElement- , GHCJS.DOM.SVGCircleElement- , GHCJS.DOM.SVGClipPathElement- , GHCJS.DOM.SVGComponentTransferFunctionElement- , GHCJS.DOM.SVGCursorElement- , GHCJS.DOM.SVGElement- , GHCJS.DOM.SVGEllipseElement- , GHCJS.DOM.SVGException- , GHCJS.DOM.SVGExternalResourcesRequired- , GHCJS.DOM.SVGFEBlendElement- , GHCJS.DOM.SVGFEColorMatrixElement- , GHCJS.DOM.SVGFEComponentTransferElement- , GHCJS.DOM.SVGFECompositeElement- , GHCJS.DOM.SVGFEConvolveMatrixElement- , GHCJS.DOM.SVGFEDiffuseLightingElement- , GHCJS.DOM.SVGFEDisplacementMapElement- , GHCJS.DOM.SVGFEDistantLightElement- , GHCJS.DOM.SVGFEDropShadowElement- , GHCJS.DOM.SVGFEGaussianBlurElement- , GHCJS.DOM.SVGFEImageElement- , GHCJS.DOM.SVGFEMergeNodeElement- , GHCJS.DOM.SVGFEMorphologyElement- , GHCJS.DOM.SVGFEOffsetElement- , GHCJS.DOM.SVGFEPointLightElement- , GHCJS.DOM.SVGFESpecularLightingElement- , GHCJS.DOM.SVGFESpotLightElement- , GHCJS.DOM.SVGFETileElement- , GHCJS.DOM.SVGFETurbulenceElement- , GHCJS.DOM.SVGFilterElement- , GHCJS.DOM.SVGFilterPrimitiveStandardAttributes- , GHCJS.DOM.SVGFitToViewBox- , GHCJS.DOM.SVGForeignObjectElement- , GHCJS.DOM.SVGGlyphRefElement- , GHCJS.DOM.SVGGradientElement- , GHCJS.DOM.SVGGraphicsElement- , GHCJS.DOM.SVGImageElement- , GHCJS.DOM.SVGLength- , GHCJS.DOM.SVGLengthList- , GHCJS.DOM.SVGLineElement- , GHCJS.DOM.SVGLinearGradientElement- , GHCJS.DOM.SVGMarkerElement- , GHCJS.DOM.SVGMaskElement- , GHCJS.DOM.SVGMatrix- , GHCJS.DOM.SVGNumber- , GHCJS.DOM.SVGNumberList- , GHCJS.DOM.SVGPathElement- , GHCJS.DOM.SVGPathSeg- , GHCJS.DOM.SVGPathSegArcAbs- , GHCJS.DOM.SVGPathSegArcRel- , GHCJS.DOM.SVGPathSegCurvetoCubicAbs- , GHCJS.DOM.SVGPathSegCurvetoCubicRel- , GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs- , GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel- , GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs- , GHCJS.DOM.SVGPathSegCurvetoQuadraticRel- , GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs- , GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel- , GHCJS.DOM.SVGPathSegLinetoAbs- , GHCJS.DOM.SVGPathSegLinetoHorizontalAbs- , GHCJS.DOM.SVGPathSegLinetoHorizontalRel- , GHCJS.DOM.SVGPathSegLinetoRel- , GHCJS.DOM.SVGPathSegLinetoVerticalAbs- , GHCJS.DOM.SVGPathSegLinetoVerticalRel- , GHCJS.DOM.SVGPathSegList- , GHCJS.DOM.SVGPathSegMovetoAbs- , GHCJS.DOM.SVGPathSegMovetoRel- , GHCJS.DOM.SVGPatternElement- , GHCJS.DOM.SVGPoint- , GHCJS.DOM.SVGPointList- , GHCJS.DOM.SVGPolygonElement- , GHCJS.DOM.SVGPolylineElement- , GHCJS.DOM.SVGPreserveAspectRatio- , GHCJS.DOM.SVGRadialGradientElement- , GHCJS.DOM.SVGRect- , GHCJS.DOM.SVGRectElement- , GHCJS.DOM.SVGRenderingIntent- , GHCJS.DOM.SVGSVGElement- , GHCJS.DOM.SVGScriptElement- , GHCJS.DOM.SVGStopElement- , GHCJS.DOM.SVGStringList- , GHCJS.DOM.SVGStyleElement- , GHCJS.DOM.SVGTests- , GHCJS.DOM.SVGTextContentElement- , GHCJS.DOM.SVGTextPathElement- , GHCJS.DOM.SVGTextPositioningElement- , GHCJS.DOM.SVGTransform- , GHCJS.DOM.SVGTransformList- , GHCJS.DOM.SVGURIReference- , GHCJS.DOM.SVGUnitTypes- , GHCJS.DOM.SVGUseElement- , GHCJS.DOM.SVGViewElement- , GHCJS.DOM.SVGViewSpec- , GHCJS.DOM.SVGZoomAndPan- , GHCJS.DOM.SVGZoomEvent- , GHCJS.DOM.Screen- , GHCJS.DOM.ScriptProcessorNode- , GHCJS.DOM.SecurityPolicyViolationEvent- , GHCJS.DOM.Selection- , GHCJS.DOM.ShadowRoot- , GHCJS.DOM.SiteBoundCredential- , GHCJS.DOM.Slotable- , GHCJS.DOM.SourceBuffer- , GHCJS.DOM.SourceBufferList- , GHCJS.DOM.SpeechSynthesis- , GHCJS.DOM.SpeechSynthesisEvent- , GHCJS.DOM.SpeechSynthesisUtterance- , GHCJS.DOM.SpeechSynthesisVoice- , GHCJS.DOM.StaticRange- , GHCJS.DOM.Storage- , GHCJS.DOM.StorageErrorCallback- , GHCJS.DOM.StorageEvent- , GHCJS.DOM.StorageInfo- , GHCJS.DOM.StorageQuota- , GHCJS.DOM.StorageQuotaCallback- , GHCJS.DOM.StorageUsageCallback- , GHCJS.DOM.StringCallback- , GHCJS.DOM.StyleMedia- , GHCJS.DOM.StyleSheet- , GHCJS.DOM.StyleSheetList- , GHCJS.DOM.SubtleCrypto- , GHCJS.DOM.Text- , GHCJS.DOM.TextDecoder- , GHCJS.DOM.TextEncoder- , GHCJS.DOM.TextEvent- , GHCJS.DOM.TextMetrics- , GHCJS.DOM.TextTrack- , GHCJS.DOM.TextTrackCue- , GHCJS.DOM.TextTrackCueList- , GHCJS.DOM.TextTrackList- , GHCJS.DOM.TimeRanges- , GHCJS.DOM.Touch- , GHCJS.DOM.TouchEvent- , GHCJS.DOM.TouchList- , GHCJS.DOM.TrackEvent- , GHCJS.DOM.TransitionEvent- , GHCJS.DOM.TreeWalker- , GHCJS.DOM.UIEvent- , GHCJS.DOM.URL- , GHCJS.DOM.URLSearchParams- , GHCJS.DOM.UserMessageHandler- , GHCJS.DOM.VTTCue- , GHCJS.DOM.VTTRegion- , GHCJS.DOM.VTTRegionList- , GHCJS.DOM.ValidityState- , GHCJS.DOM.VideoPlaybackQuality- , GHCJS.DOM.VideoTrack- , GHCJS.DOM.VideoTrackList- , GHCJS.DOM.VoidCallback- , GHCJS.DOM.WaveShaperNode- , GHCJS.DOM.WebGL2RenderingContext- , GHCJS.DOM.WebGLActiveInfo- , GHCJS.DOM.WebGLCompressedTextureATC- , GHCJS.DOM.WebGLCompressedTexturePVRTC- , GHCJS.DOM.WebGLCompressedTextureS3TC- , GHCJS.DOM.WebGLContextEvent- , GHCJS.DOM.WebGLDebugRendererInfo- , GHCJS.DOM.WebGLDebugShaders- , GHCJS.DOM.WebGLDepthTexture- , GHCJS.DOM.WebGLDrawBuffers- , GHCJS.DOM.WebGLLoseContext- , GHCJS.DOM.WebGLRenderingContextBase- , GHCJS.DOM.WebGLShaderPrecisionFormat- , GHCJS.DOM.WebGPUBuffer- , GHCJS.DOM.WebGPUCommandBuffer- , GHCJS.DOM.WebGPUCommandQueue- , GHCJS.DOM.WebGPUComputeCommandEncoder- , GHCJS.DOM.WebGPUDepthStencilDescriptor- , GHCJS.DOM.WebGPUDepthStencilState- , GHCJS.DOM.WebGPUDrawable- , GHCJS.DOM.WebGPUFunction- , GHCJS.DOM.WebGPULibrary- , GHCJS.DOM.WebGPURenderCommandEncoder- , GHCJS.DOM.WebGPURenderPassAttachmentDescriptor- , GHCJS.DOM.WebGPURenderPassColorAttachmentDescriptor- , GHCJS.DOM.WebGPURenderPassDepthAttachmentDescriptor- , GHCJS.DOM.WebGPURenderPassDescriptor- , GHCJS.DOM.WebGPURenderPipelineColorAttachmentDescriptor- , GHCJS.DOM.WebGPURenderPipelineDescriptor- , GHCJS.DOM.WebGPURenderPipelineState- , GHCJS.DOM.WebGPURenderingContext- , GHCJS.DOM.WebGPUTexture- , GHCJS.DOM.WebGPUTextureDescriptor- , GHCJS.DOM.WebKitAnimationEvent- , GHCJS.DOM.WebKitCSSMatrix- , GHCJS.DOM.WebKitCSSRegionRule- , GHCJS.DOM.WebKitCSSViewportRule- , GHCJS.DOM.WebKitMediaKeyError- , GHCJS.DOM.WebKitMediaKeyMessageEvent- , GHCJS.DOM.WebKitMediaKeyNeededEvent- , GHCJS.DOM.WebKitMediaKeySession- , GHCJS.DOM.WebKitMediaKeys- , GHCJS.DOM.WebKitNamedFlow- , GHCJS.DOM.WebKitNamespace- , GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent- , GHCJS.DOM.WebKitPoint- , GHCJS.DOM.WebKitSubtleCrypto- , GHCJS.DOM.WebKitTransitionEvent- , GHCJS.DOM.WebSocket- , GHCJS.DOM.WheelEvent- , GHCJS.DOM.Window- , GHCJS.DOM.WindowEventHandlers- , GHCJS.DOM.WindowOrWorkerGlobalScope- , GHCJS.DOM.Worker- , GHCJS.DOM.WorkerGlobalScope- , GHCJS.DOM.WorkerLocation- , GHCJS.DOM.WorkerNavigator- , GHCJS.DOM.WritableStream- , GHCJS.DOM.XMLHttpRequest- , GHCJS.DOM.XMLHttpRequestEventTarget- , GHCJS.DOM.XMLHttpRequestProgressEvent- , GHCJS.DOM.XMLSerializer- , GHCJS.DOM.XPathEvaluator- , GHCJS.DOM.XPathException- , GHCJS.DOM.XPathExpression- , GHCJS.DOM.XPathNSResolver- , GHCJS.DOM.XPathResult- , GHCJS.DOM.XSLTProcessor+cabal-version: 3.6+name: ghcjs-dom+version: 0.9.9.2+build-type: Simple+license: MIT+license-file: LICENSE+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>+synopsis: DOM library that supports both GHCJS and GHC+description:+ Documentent Object Model (DOM) functions that work with+ GHCJS, but can also be used with GHC and a Browser.+category: Web+author: Hamish Mackenzie++tested-with:+ GHC == 8.8.1 || == 8.6.5 || == 8.4.4 || == 8.2.2 || == 8.0.2 || == 7.10.3,+ GHCJS == 8.4 || == 8.2++source-repository head+ type: git+ location: https://github.com/ghcjs/ghcjs-dom+ subdir: ghcjs-dom++flag jsffi+ description:+ Use JavaScriptFFI extension for GHCJS JavaScript output+ manual: True++flag debug+ description:+ Enable debug features+ default: False+ manual: True++library+ build-depends: base <5,+ containers >=0.5.7.1 && <0.8,+ transformers >=0.2 && <0.7,+ text >= 0.11.0.6 && < 2.2++ default-language: Haskell2010++ hs-source-dirs: src++ exposed-modules:+ GHCJS.DOM.Debug+ GHCJS.DOM.Debug.Internal+ GHCJS.DOM.Document++ if flag(debug)+ cpp-options: -DGHCJS_DOM_DEBUG++ if flag(jsffi) && (impl(ghcjs <9) || (impl(ghc >=9.6.4) && arch(javascript)))+ if impl(ghcjs <9)+ build-depends:+ ghcjs-dom-jsffi >=0.9.9.0+ else+ build-depends:+ ghcjs-dom-javascript >=0.9.9.2+ else+ build-depends:+ ghcjs-dom-jsaddle >=0.9.9.0++ reexported-modules: GHCJS.DOM,+ GHCJS.DOM.Types,+ GHCJS.DOM.EventM,+ GHCJS.DOM.EventTargetClosures,+ -- (cd src/JSDOM/Generated && for a in *.hs; do echo " GHCJS.DOM.${a%.*},"; done | pbcopy)+ GHCJS.DOM.ANGLEInstancedArrays,+ GHCJS.DOM.AbstractWorker,+ GHCJS.DOM.AnalyserNode,+ GHCJS.DOM.Animatable,+ GHCJS.DOM.Animation,+ GHCJS.DOM.AnimationEvent,+ GHCJS.DOM.ApplePayError,+ GHCJS.DOM.ApplePayPaymentAuthorizedEvent,+ GHCJS.DOM.ApplePayPaymentMethodSelectedEvent,+ GHCJS.DOM.ApplePaySession,+ GHCJS.DOM.ApplePayShippingContactSelectedEvent,+ GHCJS.DOM.ApplePayShippingMethodSelectedEvent,+ GHCJS.DOM.ApplePayValidateMerchantEvent,+ GHCJS.DOM.ApplicationCache,+ GHCJS.DOM.Attr,+ GHCJS.DOM.AudioBuffer,+ GHCJS.DOM.AudioBufferCallback,+ GHCJS.DOM.AudioBufferSourceNode,+ GHCJS.DOM.AudioContext,+ GHCJS.DOM.AudioDestinationNode,+ GHCJS.DOM.AudioListener,+ GHCJS.DOM.AudioNode,+ GHCJS.DOM.AudioParam,+ GHCJS.DOM.AudioProcessingEvent,+ GHCJS.DOM.AudioTrack,+ GHCJS.DOM.AudioTrackList,+ GHCJS.DOM.AutocompleteErrorEvent,+ GHCJS.DOM.BarProp,+ GHCJS.DOM.BasicCredential,+ GHCJS.DOM.BeforeLoadEvent,+ GHCJS.DOM.BeforeUnloadEvent,+ GHCJS.DOM.BiquadFilterNode,+ GHCJS.DOM.Blob,+ GHCJS.DOM.BlobCallback,+ GHCJS.DOM.Body,+ GHCJS.DOM.ByteLengthQueuingStrategy,+ GHCJS.DOM.CSS,+ GHCJS.DOM.CSSFontFaceLoadEvent,+ GHCJS.DOM.CSSFontFaceRule,+ GHCJS.DOM.CSSImportRule,+ GHCJS.DOM.CSSKeyframeRule,+ GHCJS.DOM.CSSKeyframesRule,+ GHCJS.DOM.CSSMediaRule,+ GHCJS.DOM.CSSNamespaceRule,+ GHCJS.DOM.CSSPageRule,+ GHCJS.DOM.CSSPrimitiveValue,+ GHCJS.DOM.CSSRule,+ GHCJS.DOM.CSSRuleList,+ GHCJS.DOM.CSSStyleDeclaration,+ GHCJS.DOM.CSSStyleRule,+ GHCJS.DOM.CSSStyleSheet,+ GHCJS.DOM.CSSSupportsRule,+ GHCJS.DOM.CSSValue,+ GHCJS.DOM.CSSValueList,+ GHCJS.DOM.CanvasCaptureMediaStreamTrack,+ GHCJS.DOM.CanvasGradient,+ GHCJS.DOM.CanvasPath,+ GHCJS.DOM.CanvasRenderingContext2D,+ GHCJS.DOM.CharacterData,+ GHCJS.DOM.ChildNode,+ GHCJS.DOM.ClipboardEvent,+ GHCJS.DOM.CloseEvent,+ GHCJS.DOM.CommandLineAPIHost,+ GHCJS.DOM.Comment,+ GHCJS.DOM.CompositionEvent,+ GHCJS.DOM.ConvolverNode,+ GHCJS.DOM.Coordinates,+ GHCJS.DOM.CountQueuingStrategy,+ GHCJS.DOM.Counter,+ GHCJS.DOM.Crypto,+ GHCJS.DOM.CryptoKey,+ GHCJS.DOM.CustomElementRegistry,+ GHCJS.DOM.CustomEvent,+ GHCJS.DOM.DOMError,+ GHCJS.DOM.DOMException,+ GHCJS.DOM.DOMImplementation,+ GHCJS.DOM.DOMNamedFlowCollection,+ GHCJS.DOM.DOMParser,+ GHCJS.DOM.DOMPoint,+ GHCJS.DOM.DOMPointReadOnly,+ GHCJS.DOM.DOMRect,+ GHCJS.DOM.DOMRectReadOnly,+ GHCJS.DOM.DOMStringList,+ GHCJS.DOM.DOMStringMap,+ GHCJS.DOM.DOMTokenList,+ GHCJS.DOM.DataCue,+ GHCJS.DOM.DataTransfer,+ GHCJS.DOM.DataTransferItem,+ GHCJS.DOM.DataTransferItemList,+ GHCJS.DOM.Database,+ GHCJS.DOM.DatabaseCallback,+ GHCJS.DOM.DedicatedWorkerGlobalScope,+ GHCJS.DOM.DelayNode,+ GHCJS.DOM.DeviceMotionEvent,+ GHCJS.DOM.DeviceOrientationEvent,+ GHCJS.DOM.DeviceProximityEvent,+ GHCJS.DOM.DocumentAndElementEventHandlers,+ GHCJS.DOM.DocumentFragment,+ GHCJS.DOM.DocumentOrShadowRoot,+ GHCJS.DOM.DocumentTimeline,+ GHCJS.DOM.DocumentType,+ GHCJS.DOM.DynamicsCompressorNode,+ GHCJS.DOM.EXTBlendMinMax,+ GHCJS.DOM.EXTTextureFilterAnisotropic,+ GHCJS.DOM.EXTsRGB,+ GHCJS.DOM.Element,+ GHCJS.DOM.ElementCSSInlineStyle,+ GHCJS.DOM.Enums,+ GHCJS.DOM.ErrorEvent,+ GHCJS.DOM.Event,+ GHCJS.DOM.EventListener,+ GHCJS.DOM.EventSource,+ GHCJS.DOM.EventTarget,+ GHCJS.DOM.File,+ GHCJS.DOM.FileError,+ GHCJS.DOM.FileException,+ GHCJS.DOM.FileList,+ GHCJS.DOM.FileReader,+ GHCJS.DOM.FileReaderSync,+ GHCJS.DOM.FocusEvent,+ GHCJS.DOM.FontFace,+ GHCJS.DOM.FontFaceSet,+ GHCJS.DOM.FormData,+ GHCJS.DOM.GainNode,+ GHCJS.DOM.Gamepad,+ GHCJS.DOM.GamepadButton,+ GHCJS.DOM.GamepadEvent,+ GHCJS.DOM.Geolocation,+ GHCJS.DOM.Geoposition,+ GHCJS.DOM.GlobalCrypto,+ GHCJS.DOM.GlobalEventHandlers,+ GHCJS.DOM.GlobalPerformance,+ GHCJS.DOM.HTMLAllCollection,+ GHCJS.DOM.HTMLAnchorElement,+ GHCJS.DOM.HTMLAppletElement,+ GHCJS.DOM.HTMLAreaElement,+ GHCJS.DOM.HTMLAttachmentElement,+ GHCJS.DOM.HTMLBRElement,+ GHCJS.DOM.HTMLBaseElement,+ GHCJS.DOM.HTMLBodyElement,+ GHCJS.DOM.HTMLButtonElement,+ GHCJS.DOM.HTMLCanvasElement,+ GHCJS.DOM.HTMLCollection,+ GHCJS.DOM.HTMLDListElement,+ GHCJS.DOM.HTMLDataElement,+ GHCJS.DOM.HTMLDataListElement,+ GHCJS.DOM.HTMLDetailsElement,+ GHCJS.DOM.HTMLDirectoryElement,+ GHCJS.DOM.HTMLDivElement,+ GHCJS.DOM.HTMLDocument,+ GHCJS.DOM.HTMLElement,+ GHCJS.DOM.HTMLEmbedElement,+ GHCJS.DOM.HTMLFieldSetElement,+ GHCJS.DOM.HTMLFontElement,+ GHCJS.DOM.HTMLFormControlsCollection,+ GHCJS.DOM.HTMLFormElement,+ GHCJS.DOM.HTMLFrameElement,+ GHCJS.DOM.HTMLFrameSetElement,+ GHCJS.DOM.HTMLHRElement,+ GHCJS.DOM.HTMLHeadElement,+ GHCJS.DOM.HTMLHeadingElement,+ GHCJS.DOM.HTMLHtmlElement,+ GHCJS.DOM.HTMLHyperlinkElementUtils,+ GHCJS.DOM.HTMLIFrameElement,+ GHCJS.DOM.HTMLImageElement,+ GHCJS.DOM.HTMLInputElement,+ GHCJS.DOM.HTMLKeygenElement,+ GHCJS.DOM.HTMLLIElement,+ GHCJS.DOM.HTMLLabelElement,+ GHCJS.DOM.HTMLLegendElement,+ GHCJS.DOM.HTMLLinkElement,+ GHCJS.DOM.HTMLMapElement,+ GHCJS.DOM.HTMLMarqueeElement,+ GHCJS.DOM.HTMLMediaElement,+ GHCJS.DOM.HTMLMenuElement,+ GHCJS.DOM.HTMLMetaElement,+ GHCJS.DOM.HTMLMeterElement,+ GHCJS.DOM.HTMLModElement,+ GHCJS.DOM.HTMLOListElement,+ GHCJS.DOM.HTMLObjectElement,+ GHCJS.DOM.HTMLOptGroupElement,+ GHCJS.DOM.HTMLOptionElement,+ GHCJS.DOM.HTMLOptionsCollection,+ GHCJS.DOM.HTMLOutputElement,+ GHCJS.DOM.HTMLParagraphElement,+ GHCJS.DOM.HTMLParamElement,+ GHCJS.DOM.HTMLPreElement,+ GHCJS.DOM.HTMLProgressElement,+ GHCJS.DOM.HTMLQuoteElement,+ GHCJS.DOM.HTMLScriptElement,+ GHCJS.DOM.HTMLSelectElement,+ GHCJS.DOM.HTMLSlotElement,+ GHCJS.DOM.HTMLSourceElement,+ GHCJS.DOM.HTMLStyleElement,+ GHCJS.DOM.HTMLTableCaptionElement,+ GHCJS.DOM.HTMLTableCellElement,+ GHCJS.DOM.HTMLTableColElement,+ GHCJS.DOM.HTMLTableElement,+ GHCJS.DOM.HTMLTableRowElement,+ GHCJS.DOM.HTMLTableSectionElement,+ GHCJS.DOM.HTMLTemplateElement,+ GHCJS.DOM.HTMLTextAreaElement,+ GHCJS.DOM.HTMLTimeElement,+ GHCJS.DOM.HTMLTitleElement,+ GHCJS.DOM.HTMLTrackElement,+ GHCJS.DOM.HTMLUListElement,+ GHCJS.DOM.HTMLVideoElement,+ GHCJS.DOM.HashChangeEvent,+ GHCJS.DOM.Headers,+ GHCJS.DOM.History,+ GHCJS.DOM.IDBCursor,+ GHCJS.DOM.IDBCursorWithValue,+ GHCJS.DOM.IDBDatabase,+ GHCJS.DOM.IDBFactory,+ GHCJS.DOM.IDBIndex,+ GHCJS.DOM.IDBKeyRange,+ GHCJS.DOM.IDBObjectStore,+ GHCJS.DOM.IDBOpenDBRequest,+ GHCJS.DOM.IDBRequest,+ GHCJS.DOM.IDBTransaction,+ GHCJS.DOM.IDBVersionChangeEvent,+ GHCJS.DOM.ImageData,+ GHCJS.DOM.InputEvent,+ GHCJS.DOM.InspectorFrontendHost,+ GHCJS.DOM.IntersectionObserver,+ GHCJS.DOM.IntersectionObserverCallback,+ GHCJS.DOM.IntersectionObserverEntry,+ GHCJS.DOM.KeyboardEvent,+ GHCJS.DOM.KeyframeEffect,+ GHCJS.DOM.Location,+ GHCJS.DOM.MediaController,+ GHCJS.DOM.MediaControlsHost,+ GHCJS.DOM.MediaDeviceInfo,+ GHCJS.DOM.MediaDevices,+ GHCJS.DOM.MediaElementAudioSourceNode,+ GHCJS.DOM.MediaEncryptedEvent,+ GHCJS.DOM.MediaError,+ GHCJS.DOM.MediaKeyMessageEvent,+ GHCJS.DOM.MediaKeySession,+ GHCJS.DOM.MediaKeyStatusMap,+ GHCJS.DOM.MediaKeySystemAccess,+ GHCJS.DOM.MediaKeys,+ GHCJS.DOM.MediaList,+ GHCJS.DOM.MediaQueryList,+ GHCJS.DOM.MediaQueryListListener,+ GHCJS.DOM.MediaRemoteControls,+ GHCJS.DOM.MediaSession,+ GHCJS.DOM.MediaSource,+ GHCJS.DOM.MediaStream,+ GHCJS.DOM.MediaStreamAudioDestinationNode,+ GHCJS.DOM.MediaStreamAudioSourceNode,+ GHCJS.DOM.MediaStreamEvent,+ GHCJS.DOM.MediaStreamTrack,+ GHCJS.DOM.MediaStreamTrackEvent,+ GHCJS.DOM.MessageChannel,+ GHCJS.DOM.MessageEvent,+ GHCJS.DOM.MessagePort,+ GHCJS.DOM.MimeType,+ GHCJS.DOM.MimeTypeArray,+ GHCJS.DOM.MouseEvent,+ GHCJS.DOM.MutationEvent,+ GHCJS.DOM.MutationObserver,+ GHCJS.DOM.MutationRecord,+ GHCJS.DOM.NamedNodeMap,+ GHCJS.DOM.Navigator,+ GHCJS.DOM.NavigatorConcurrentHardware,+ GHCJS.DOM.NavigatorID,+ GHCJS.DOM.NavigatorLanguage,+ GHCJS.DOM.NavigatorOnLine,+ GHCJS.DOM.NavigatorUserMediaError,+ GHCJS.DOM.NavigatorUserMediaErrorCallback,+ GHCJS.DOM.NavigatorUserMediaSuccessCallback,+ GHCJS.DOM.Node,+ GHCJS.DOM.NodeFilter,+ GHCJS.DOM.NodeIterator,+ GHCJS.DOM.NodeList,+ GHCJS.DOM.NonDocumentTypeChildNode,+ GHCJS.DOM.NonElementParentNode,+ GHCJS.DOM.Notification,+ GHCJS.DOM.NotificationPermissionCallback,+ GHCJS.DOM.OESStandardDerivatives,+ GHCJS.DOM.OESTextureHalfFloat,+ GHCJS.DOM.OESVertexArrayObject,+ GHCJS.DOM.OfflineAudioCompletionEvent,+ GHCJS.DOM.OfflineAudioContext,+ GHCJS.DOM.OscillatorNode,+ GHCJS.DOM.OverconstrainedError,+ GHCJS.DOM.OverconstrainedErrorEvent,+ GHCJS.DOM.OverflowEvent,+ GHCJS.DOM.PageTransitionEvent,+ GHCJS.DOM.PannerNode,+ GHCJS.DOM.ParentNode,+ GHCJS.DOM.PasswordCredential,+ GHCJS.DOM.Path2D,+ GHCJS.DOM.Performance,+ GHCJS.DOM.PerformanceEntry,+ GHCJS.DOM.PerformanceNavigation,+ GHCJS.DOM.PerformanceObserver,+ GHCJS.DOM.PerformanceObserverCallback,+ GHCJS.DOM.PerformanceObserverEntryList,+ GHCJS.DOM.PerformanceResourceTiming,+ GHCJS.DOM.PerformanceTiming,+ GHCJS.DOM.Plugin,+ GHCJS.DOM.PluginArray,+ GHCJS.DOM.PopStateEvent,+ GHCJS.DOM.PositionCallback,+ GHCJS.DOM.PositionError,+ GHCJS.DOM.PositionErrorCallback,+ GHCJS.DOM.ProcessingInstruction,+ GHCJS.DOM.ProgressEvent,+ GHCJS.DOM.PromiseRejectionEvent,+ GHCJS.DOM.QuickTimePluginReplacement,+ GHCJS.DOM.RGBColor,+ GHCJS.DOM.RTCDTMFSender,+ GHCJS.DOM.RTCDTMFToneChangeEvent,+ GHCJS.DOM.RTCDataChannel,+ GHCJS.DOM.RTCDataChannelEvent,+ GHCJS.DOM.RTCIceCandidate,+ GHCJS.DOM.RTCIceCandidateEvent,+ GHCJS.DOM.RTCIceTransport,+ GHCJS.DOM.RTCPeerConnection,+ GHCJS.DOM.RTCPeerConnectionIceEvent,+ GHCJS.DOM.RTCRtpReceiver,+ GHCJS.DOM.RTCRtpSender,+ GHCJS.DOM.RTCRtpTransceiver,+ GHCJS.DOM.RTCSessionDescription,+ GHCJS.DOM.RTCTrackEvent,+ GHCJS.DOM.RadioNodeList,+ GHCJS.DOM.Range,+ GHCJS.DOM.ReadableByteStreamController,+ GHCJS.DOM.ReadableStream,+ GHCJS.DOM.ReadableStreamBYOBReader,+ GHCJS.DOM.ReadableStreamBYOBRequest,+ GHCJS.DOM.ReadableStreamDefaultController,+ GHCJS.DOM.ReadableStreamDefaultReader,+ GHCJS.DOM.ReadableStreamSource,+ GHCJS.DOM.Rect,+ GHCJS.DOM.Request,+ GHCJS.DOM.RequestAnimationFrameCallback,+ GHCJS.DOM.Response,+ GHCJS.DOM.SQLError,+ GHCJS.DOM.SQLException,+ GHCJS.DOM.SQLResultSet,+ GHCJS.DOM.SQLResultSetRowList,+ GHCJS.DOM.SQLStatementCallback,+ GHCJS.DOM.SQLStatementErrorCallback,+ GHCJS.DOM.SQLTransaction,+ GHCJS.DOM.SQLTransactionCallback,+ GHCJS.DOM.SQLTransactionErrorCallback,+ GHCJS.DOM.SVGAElement,+ GHCJS.DOM.SVGAltGlyphElement,+ GHCJS.DOM.SVGAngle,+ GHCJS.DOM.SVGAnimatedAngle,+ GHCJS.DOM.SVGAnimatedBoolean,+ GHCJS.DOM.SVGAnimatedEnumeration,+ GHCJS.DOM.SVGAnimatedInteger,+ GHCJS.DOM.SVGAnimatedLength,+ GHCJS.DOM.SVGAnimatedLengthList,+ GHCJS.DOM.SVGAnimatedNumber,+ GHCJS.DOM.SVGAnimatedNumberList,+ GHCJS.DOM.SVGAnimatedPreserveAspectRatio,+ GHCJS.DOM.SVGAnimatedRect,+ GHCJS.DOM.SVGAnimatedString,+ GHCJS.DOM.SVGAnimatedTransformList,+ GHCJS.DOM.SVGAnimationElement,+ GHCJS.DOM.SVGCircleElement,+ GHCJS.DOM.SVGClipPathElement,+ GHCJS.DOM.SVGComponentTransferFunctionElement,+ GHCJS.DOM.SVGCursorElement,+ GHCJS.DOM.SVGElement,+ GHCJS.DOM.SVGEllipseElement,+ GHCJS.DOM.SVGException,+ GHCJS.DOM.SVGExternalResourcesRequired,+ GHCJS.DOM.SVGFEBlendElement,+ GHCJS.DOM.SVGFEColorMatrixElement,+ GHCJS.DOM.SVGFEComponentTransferElement,+ GHCJS.DOM.SVGFECompositeElement,+ GHCJS.DOM.SVGFEConvolveMatrixElement,+ GHCJS.DOM.SVGFEDiffuseLightingElement,+ GHCJS.DOM.SVGFEDisplacementMapElement,+ GHCJS.DOM.SVGFEDistantLightElement,+ GHCJS.DOM.SVGFEDropShadowElement,+ GHCJS.DOM.SVGFEGaussianBlurElement,+ GHCJS.DOM.SVGFEImageElement,+ GHCJS.DOM.SVGFEMergeNodeElement,+ GHCJS.DOM.SVGFEMorphologyElement,+ GHCJS.DOM.SVGFEOffsetElement,+ GHCJS.DOM.SVGFEPointLightElement,+ GHCJS.DOM.SVGFESpecularLightingElement,+ GHCJS.DOM.SVGFESpotLightElement,+ GHCJS.DOM.SVGFETileElement,+ GHCJS.DOM.SVGFETurbulenceElement,+ GHCJS.DOM.SVGFilterElement,+ GHCJS.DOM.SVGFilterPrimitiveStandardAttributes,+ GHCJS.DOM.SVGFitToViewBox,+ GHCJS.DOM.SVGForeignObjectElement,+ GHCJS.DOM.SVGGlyphRefElement,+ GHCJS.DOM.SVGGradientElement,+ GHCJS.DOM.SVGGraphicsElement,+ GHCJS.DOM.SVGImageElement,+ GHCJS.DOM.SVGLength,+ GHCJS.DOM.SVGLengthList,+ GHCJS.DOM.SVGLineElement,+ GHCJS.DOM.SVGLinearGradientElement,+ GHCJS.DOM.SVGMarkerElement,+ GHCJS.DOM.SVGMaskElement,+ GHCJS.DOM.SVGMatrix,+ GHCJS.DOM.SVGNumber,+ GHCJS.DOM.SVGNumberList,+ GHCJS.DOM.SVGPathElement,+ GHCJS.DOM.SVGPathSeg,+ GHCJS.DOM.SVGPathSegArcAbs,+ GHCJS.DOM.SVGPathSegArcRel,+ GHCJS.DOM.SVGPathSegCurvetoCubicAbs,+ GHCJS.DOM.SVGPathSegCurvetoCubicRel,+ GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs,+ GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel,+ GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs,+ GHCJS.DOM.SVGPathSegCurvetoQuadraticRel,+ GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs,+ GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel,+ GHCJS.DOM.SVGPathSegLinetoAbs,+ GHCJS.DOM.SVGPathSegLinetoHorizontalAbs,+ GHCJS.DOM.SVGPathSegLinetoHorizontalRel,+ GHCJS.DOM.SVGPathSegLinetoRel,+ GHCJS.DOM.SVGPathSegLinetoVerticalAbs,+ GHCJS.DOM.SVGPathSegLinetoVerticalRel,+ GHCJS.DOM.SVGPathSegList,+ GHCJS.DOM.SVGPathSegMovetoAbs,+ GHCJS.DOM.SVGPathSegMovetoRel,+ GHCJS.DOM.SVGPatternElement,+ GHCJS.DOM.SVGPoint,+ GHCJS.DOM.SVGPointList,+ GHCJS.DOM.SVGPolygonElement,+ GHCJS.DOM.SVGPolylineElement,+ GHCJS.DOM.SVGPreserveAspectRatio,+ GHCJS.DOM.SVGRadialGradientElement,+ GHCJS.DOM.SVGRect,+ GHCJS.DOM.SVGRectElement,+ GHCJS.DOM.SVGRenderingIntent,+ GHCJS.DOM.SVGSVGElement,+ GHCJS.DOM.SVGScriptElement,+ GHCJS.DOM.SVGStopElement,+ GHCJS.DOM.SVGStringList,+ GHCJS.DOM.SVGStyleElement,+ GHCJS.DOM.SVGTests,+ GHCJS.DOM.SVGTextContentElement,+ GHCJS.DOM.SVGTextPathElement,+ GHCJS.DOM.SVGTextPositioningElement,+ GHCJS.DOM.SVGTransform,+ GHCJS.DOM.SVGTransformList,+ GHCJS.DOM.SVGURIReference,+ GHCJS.DOM.SVGUnitTypes,+ GHCJS.DOM.SVGUseElement,+ GHCJS.DOM.SVGViewElement,+ GHCJS.DOM.SVGViewSpec,+ GHCJS.DOM.SVGZoomAndPan,+ GHCJS.DOM.SVGZoomEvent,+ GHCJS.DOM.Screen,+ GHCJS.DOM.ScriptProcessorNode,+ GHCJS.DOM.SecurityPolicyViolationEvent,+ GHCJS.DOM.Selection,+ GHCJS.DOM.ShadowRoot,+ GHCJS.DOM.SiteBoundCredential,+ GHCJS.DOM.Slotable,+ GHCJS.DOM.SourceBuffer,+ GHCJS.DOM.SourceBufferList,+ GHCJS.DOM.SpeechSynthesis,+ GHCJS.DOM.SpeechSynthesisEvent,+ GHCJS.DOM.SpeechSynthesisUtterance,+ GHCJS.DOM.SpeechSynthesisVoice,+ GHCJS.DOM.StaticRange,+ GHCJS.DOM.Storage,+ GHCJS.DOM.StorageErrorCallback,+ GHCJS.DOM.StorageEvent,+ GHCJS.DOM.StorageInfo,+ GHCJS.DOM.StorageQuota,+ GHCJS.DOM.StorageQuotaCallback,+ GHCJS.DOM.StorageUsageCallback,+ GHCJS.DOM.StringCallback,+ GHCJS.DOM.StyleMedia,+ GHCJS.DOM.StyleSheet,+ GHCJS.DOM.StyleSheetList,+ GHCJS.DOM.SubtleCrypto,+ GHCJS.DOM.Text,+ GHCJS.DOM.TextDecoder,+ GHCJS.DOM.TextEncoder,+ GHCJS.DOM.TextEvent,+ GHCJS.DOM.TextMetrics,+ GHCJS.DOM.TextTrack,+ GHCJS.DOM.TextTrackCue,+ GHCJS.DOM.TextTrackCueList,+ GHCJS.DOM.TextTrackList,+ GHCJS.DOM.TimeRanges,+ GHCJS.DOM.Touch,+ GHCJS.DOM.TouchEvent,+ GHCJS.DOM.TouchList,+ GHCJS.DOM.TrackEvent,+ GHCJS.DOM.TransitionEvent,+ GHCJS.DOM.TreeWalker,+ GHCJS.DOM.UIEvent,+ GHCJS.DOM.URL,+ GHCJS.DOM.URLSearchParams,+ GHCJS.DOM.UserMessageHandler,+ GHCJS.DOM.VTTCue,+ GHCJS.DOM.VTTRegion,+ GHCJS.DOM.VTTRegionList,+ GHCJS.DOM.ValidityState,+ GHCJS.DOM.VideoPlaybackQuality,+ GHCJS.DOM.VideoTrack,+ GHCJS.DOM.VideoTrackList,+ GHCJS.DOM.VoidCallback,+ GHCJS.DOM.WaveShaperNode,+ GHCJS.DOM.WebGL2RenderingContext,+ GHCJS.DOM.WebGLActiveInfo,+ GHCJS.DOM.WebGLCompressedTextureATC,+ GHCJS.DOM.WebGLCompressedTexturePVRTC,+ GHCJS.DOM.WebGLCompressedTextureS3TC,+ GHCJS.DOM.WebGLContextEvent,+ GHCJS.DOM.WebGLDebugRendererInfo,+ GHCJS.DOM.WebGLDebugShaders,+ GHCJS.DOM.WebGLDepthTexture,+ GHCJS.DOM.WebGLDrawBuffers,+ GHCJS.DOM.WebGLLoseContext,+ GHCJS.DOM.WebGLRenderingContextBase,+ GHCJS.DOM.WebGLShaderPrecisionFormat,+ GHCJS.DOM.WebGPUBuffer,+ GHCJS.DOM.WebGPUCommandBuffer,+ GHCJS.DOM.WebGPUCommandQueue,+ GHCJS.DOM.WebGPUComputeCommandEncoder,+ GHCJS.DOM.WebGPUDepthStencilDescriptor,+ GHCJS.DOM.WebGPUDepthStencilState,+ GHCJS.DOM.WebGPUDrawable,+ GHCJS.DOM.WebGPUFunction,+ GHCJS.DOM.WebGPULibrary,+ GHCJS.DOM.WebGPURenderCommandEncoder,+ GHCJS.DOM.WebGPURenderPassAttachmentDescriptor,+ GHCJS.DOM.WebGPURenderPassColorAttachmentDescriptor,+ GHCJS.DOM.WebGPURenderPassDepthAttachmentDescriptor,+ GHCJS.DOM.WebGPURenderPassDescriptor,+ GHCJS.DOM.WebGPURenderPipelineColorAttachmentDescriptor,+ GHCJS.DOM.WebGPURenderPipelineDescriptor,+ GHCJS.DOM.WebGPURenderPipelineState,+ GHCJS.DOM.WebGPURenderingContext,+ GHCJS.DOM.WebGPUTexture,+ GHCJS.DOM.WebGPUTextureDescriptor,+ GHCJS.DOM.WebKitAnimationEvent,+ GHCJS.DOM.WebKitCSSMatrix,+ GHCJS.DOM.WebKitCSSRegionRule,+ GHCJS.DOM.WebKitCSSViewportRule,+ GHCJS.DOM.WebKitMediaKeyError,+ GHCJS.DOM.WebKitMediaKeyMessageEvent,+ GHCJS.DOM.WebKitMediaKeyNeededEvent,+ GHCJS.DOM.WebKitMediaKeySession,+ GHCJS.DOM.WebKitMediaKeys,+ GHCJS.DOM.WebKitNamedFlow,+ GHCJS.DOM.WebKitNamespace,+ GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent,+ GHCJS.DOM.WebKitPoint,+ GHCJS.DOM.WebKitSubtleCrypto,+ GHCJS.DOM.WebKitTransitionEvent,+ GHCJS.DOM.WebSocket,+ GHCJS.DOM.WheelEvent,+ GHCJS.DOM.Window,+ GHCJS.DOM.WindowEventHandlers,+ GHCJS.DOM.WindowOrWorkerGlobalScope,+ GHCJS.DOM.Worker,+ GHCJS.DOM.WorkerGlobalScope,+ GHCJS.DOM.WorkerLocation,+ GHCJS.DOM.WorkerNavigator,+ GHCJS.DOM.WritableStream,+ GHCJS.DOM.XMLHttpRequest,+ GHCJS.DOM.XMLHttpRequestEventTarget,+ GHCJS.DOM.XMLHttpRequestProgressEvent,+ GHCJS.DOM.XMLSerializer,+ GHCJS.DOM.XPathEvaluator,+ GHCJS.DOM.XPathException,+ GHCJS.DOM.XPathExpression,+ GHCJS.DOM.XPathNSResolver,+ GHCJS.DOM.XPathResult,+ GHCJS.DOM.XSLTProcessor
+ src/GHCJS/DOM/Debug.hs view
@@ -0,0 +1,179 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+module GHCJS.DOM.Debug (+ DomHasCallStack+ , debugEnabled+ , getElementStack+ , addDebugMenu+ , addDebugMenu'+) where++import Control.Arrow (Arrow(..))+import Control.Monad.IO.Class (MonadIO(..))++import Data.Char (toLower)+import Data.Foldable (forM_)+import Data.Monoid ((<>))++import System.IO (stderr, hPutStrLn)++import GHC.Stack+ (srcLocStartLine, srcLocFile, SrcLoc(..), HasCallStack)+import GHC.Exts (Constraint)++import GHCJS.DOM (currentDocumentUnchecked)+import GHCJS.DOM.Types+ (HTMLDivElement(..), HTMLStyleElement(..), uncheckedCastTo,+ HTMLUListElement(..), MouseEvent(..), Document(..), Element(..),+ HTMLAnchorElement(..), MonadJSM, JSM, liftJSM, JSString)+import GHCJS.DOM.Debug.Internal (DomHasCallStack, getElementStack, debugEnabled)+import GHCJS.DOM.Document+ (createTextNode, getBodyUnchecked,+ getElementsByTagName, createElement)+import GHCJS.DOM.DocumentOrShadowRoot (elementFromPoint)+import GHCJS.DOM.Element+ (getTagName, setAttribute, getAttribute, setInnerHTML)+import GHCJS.DOM.EventM+ (addListener, uiPageXY, mouseClientXY, mouseShiftKey, target,+ newListener, on, preventDefault)+import GHCJS.DOM.EventTargetClosures (SaferEventListener(..))+import GHCJS.DOM.GlobalEventHandlers (click, contextMenu)+import GHCJS.DOM.HTMLCollection (itemUnchecked)+import GHCJS.DOM.HTMLStyleElement (setType)+import GHCJS.DOM.Node (getParentElement, appendChild_)+import GHCJS.DOM.NonElementParentNode (getElementById)++addDebugMenu :: MonadJSM m => m (JSM ())+addDebugMenu = addDebugMenu' (const Nothing)++addDebugMenu' :: MonadJSM m => (SrcLoc -> Maybe String) -> m (JSM ())+addDebugMenu' getSourceLink = liftJSM $ do+ let menuId = "ghcjs-dom-debug" :: JSString+ doc <- currentDocumentUnchecked+ style <- uncheckedCastTo HTMLStyleElement <$> createElement doc ("style" :: JSString)+ setType style ("text/css" :: JSString)+ setInnerHTML style $ mconcat [+ "#", menuId, ", #", menuId, " ul ul{"+ , " display: block;"+ , " position: absolute;"+ , " box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);"+ , " padding: 2px;"+ , " z-index:1000;"+ , " margin: 0;"+ , " list-style-type: none;"+ , " list-style: none;"+ , " background-color:#fff;"+ , " color:#000;"+ , "}\n"+ , "#", menuId, " ul{"+ , " list-style-type: none;"+ , " margin: 0;"+ , " padding: 2px;"+ , " cursor: pointer;"+ , "}\n"+ , "#", menuId, " li{"+ , " white-space: nowrap;"+ , "}\n"+ , "#", menuId, " ul ul{"+ , " display: none;"+ , "}\n"+ , "#", menuId, ">li:hover{"+ , " background-color:#ddd;"+ , "}\n"+ , "#", menuId, " li:hover ul{"+ , " display: inline-block;"+ , " position: absolute;"+ , " z-index:1001;"+ , "}\n"+ ]+ getElementsByTagName doc ("head" :: JSString) >>= (`itemUnchecked` 0) >>= (`appendChild_` style)+ body <- getBodyUnchecked doc+ clickListener <- newListener $ do+ target >>= \case+ Just (t :: HTMLAnchorElement) ->+ getAttribute t ("hs-srcloc" :: JSString)+ >>= mapM_ (liftIO . hPutStrLn stderr . ("OPEN " <>))+ Nothing -> return ()+ getElementById doc menuId >>= mapM_+ (\e -> setAttribute e ("style" :: JSString) ("display: none;" :: JSString))+ on doc contextMenu $ mouseShiftKey >>= \case+ True -> ((fromIntegral *** fromIntegral) <$> mouseClientXY) >>= uncurry (elementFromPoint doc) >>= \case+ Just e -> do+ preventDefault+ menu <- getElementById doc menuId >>= \case+ Just menu -> setInnerHTML menu ("" :: JSString) >> return (uncheckedCastTo HTMLDivElement menu)+ Nothing -> do+ menu <- uncheckedCastTo HTMLDivElement <$> createElement doc ("div" :: JSString)+ setAttribute menu ("id" :: JSString) menuId+ appendChild_ body menu+ return menu++ if debugEnabled+ then do+ ul <- uncheckedCastTo HTMLUListElement <$> createElement doc ("ul" :: JSString)+ appendChild_ menu ul+ addMenu doc clickListener ul e+ else do+ a <- uncheckedCastTo HTMLAnchorElement <$> createElement doc ("a" :: JSString)+ appendChild_ menu a+ createTextNode doc ("The ghcjs-dom debug cabal flag is switched off" :: JSString)+ >>= appendChild_ a+ setAttribute a ("href" :: JSString)+ ("https://github.com/ghcjs/ghcjs-dom/blob/master/README.md#debug" :: JSString)+ setAttribute a ("target" :: JSString) ("_blank" :: JSString)+ liftJSM $ addListener a click clickListener False++ (pageX, pageY) <- uiPageXY+ setAttribute menu ("style" :: JSString) ("display: block; left: " <> show pageX <> "px; top:" <> show pageY <> "px;" )+ Nothing -> return ()+ False -> return ()++ where+ addMenu :: MonadJSM m => Document -> SaferEventListener HTMLAnchorElement MouseEvent -> HTMLUListElement -> Element -> m ()+ addMenu doc clickListener parentMenu = loop+ where+ loop e = do+ getElementStack e >>= mapM_ (addElementMenu doc clickListener parentMenu e)+ getParentElement e >>= mapM_ loop++ addElementMenu+ :: MonadJSM m+ => Document+ -> SaferEventListener HTMLAnchorElement MouseEvent+ -> HTMLUListElement+ -> Element+ -> [(String, SrcLoc)]+ -> m ()+ addElementMenu doc clickListener parentMenu e cs = do+ tagName <- map toLower <$> getTagName e+ parentLi <- createElement doc ("li" :: JSString)+ appendChild_ parentMenu parentLi+ createTextNode doc tagName >>= appendChild_ parentLi+ ul <- createElement doc ("ul" :: JSString)+ appendChild_ parentLi ul+ forM_ (reverse cs) $ \(f, loc) -> do+ li <- createElement doc ("li" :: JSString)+ appendChild_ ul li+ a <- uncheckedCastTo HTMLAnchorElement <$> createElement doc ("a" :: JSString)+ appendChild_ li a+ createTextNode doc (f <> " " <> srcLocFile loc <> ":" <> show (srcLocStartLine loc))+ >>= appendChild_ a+ forM_ (getSourceLink loc) $ \link -> do+ setAttribute a ("href" :: JSString) link+ setAttribute a ("target" :: JSString) ("_blank" :: JSString)+ setAttribute a ("hs-srcloc" :: JSString) $ prettySrcLoc loc+ liftJSM $ addListener a click clickListener False++ prettySrcLoc :: SrcLoc -> String+ prettySrcLoc SrcLoc {..} = mconcat+ [ srcLocFile , ":("+ , show srcLocStartLine, ","+ , show srcLocStartCol , ")-("+ , show srcLocEndLine , ","+ , show srcLocEndCol , ") in "+ , srcLocPackage, ":", srcLocModule+ ]+
+ src/GHCJS/DOM/Debug/Internal.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE KindSignatures #-}+module GHCJS.DOM.Debug.Internal (+ DomHasCallStack+ , debugEnabled+ , cachedStacks+ , cacheStack+ , lookupStack+ , getElementStack+) where++import Control.Monad (void)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.Map (Map)+import qualified Data.Map as M (insert, size, lookup)+import Data.IORef (atomicModifyIORef', IORef, newIORef, readIORef)+import GHC.Stack+ (SrcLoc, CallStack, callStack, getCallStack, HasCallStack)+import GHC.Exts (Constraint)+import System.IO.Unsafe (unsafePerformIO)+import Text.Read (readMaybe)++import GHCJS.DOM.Types (Element(..), MonadDOM, ToJSString, JSString)+import GHCJS.DOM.Element (setAttribute, getAttribute)++#ifdef GHCJS_DOM_DEBUG++type DomHasCallStack = (HasCallStack :: Constraint)+debugEnabled :: Bool+debugEnabled = True++#else++type DomHasCallStack = (() :: Constraint)++debugEnabled :: Bool+debugEnabled = False++#endif++cachedStacks :: IORef (Map String Int, Map Int [(String, SrcLoc)])+cachedStacks = unsafePerformIO $ newIORef (mempty, mempty)+{-# NOINLINE cachedStacks #-}++lookupStack :: MonadIO m => Int -> m (Maybe [(String, SrcLoc)])+lookupStack n = do+ (_, intToStack) <- liftIO $ readIORef cachedStacks+ return $ M.lookup n intToStack++getElementStack :: MonadDOM m => Element -> m (Maybe [(String, SrcLoc)])+getElementStack e =+ getAttribute e ("hs-creator" :: JSString) >>= \case+ Just a -> case readMaybe a of+ Just n -> lookupStack n+ Nothing -> return Nothing+ Nothing -> return Nothing++cacheStack :: MonadIO m => [(String, SrcLoc)] -> m Int+cacheStack cs = do+ let csString = show cs+ liftIO $ atomicModifyIORef' cachedStacks $ \(stackToInt, intToStack) ->+ case M.lookup csString stackToInt of+ Just n -> ((stackToInt, intToStack), n)+ Nothing ->+ let n = M.size stackToInt in+ ((M.insert csString n stackToInt, M.insert n cs intToStack), n)++
+ src/GHCJS/DOM/Document.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE PackageImports #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ConstraintKinds #-}+module GHCJS.DOM.Document (+ module Export+ , createElement+ , createElement_+ , createElementNS+ , createElementNS_+) where++#ifdef GHCJS_DOM_DEBUG++import Control.Monad (void)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.IORef (atomicModifyIORef', IORef, newIORef, readIORef)+import GHC.Stack+ (SrcLoc, CallStack, callStack, getCallStack, HasCallStack)+import System.IO.Unsafe (unsafePerformIO)+import Text.Read (readMaybe)++import GHCJS.DOM.Types (Element(..), MonadDOM, ToJSString, JSString)+import GHCJS.DOM.Debug.Internal (cacheStack)+import GHCJS.DOM.Element (setAttribute, getAttribute)+#ifdef MIN_VERSION_ghcjs_dom_javascript+import qualified "ghcjs-dom-javascript" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-javascript" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+#ifdef MIN_VERSION_ghcjs_dom_jsffi+import qualified "ghcjs-dom-jsffi" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-jsffi" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+#if __GLASGOW_HASKELL__ >= 900+import qualified "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+import qualified "jsaddle-dom" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)+import "jsaddle-dom" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#endif+#endif+#endif+++createElement+ :: (MonadDOM m, IsDocument doc, ToJSString localName, HasCallStack)+ => doc+ -> localName+ -> m Element+createElement doc localName = do+ e <- Raw.createElement doc localName+ let cs = getCallStack callStack+ setAttribute e ("hs-creator"::JSString) . show =<< cacheStack cs+ return e++createElement_+ :: (MonadDOM m, IsDocument doc, ToJSString localName, HasCallStack)+ => doc+ -> localName+ -> m ()+createElement_ doc localName = void $ createElement doc localName++createElementNS+ :: (MonadDOM m, IsDocument doc, ToJSString namespaceURI, ToJSString qualifiedName, HasCallStack)+ => doc+ -> Maybe namespaceURI+ -> qualifiedName+ -> m Element+createElementNS doc namespaceURI qualifiedName = do+ e <- Raw.createElementNS doc namespaceURI qualifiedName+ setAttribute e ("haskell-stack"::JSString) . show =<< cacheStack (getCallStack callStack)+ return e++createElementNS_+ :: (MonadDOM m, IsDocument doc, ToJSString namespaceURI, ToJSString qualifiedName, HasCallStack)+ => doc+ -> Maybe namespaceURI+ -> qualifiedName+ -> m ()+createElementNS_ doc namespaceURI qualifiedName = void $ createElementNS doc namespaceURI qualifiedName++#else++#ifdef MIN_VERSION_ghcjs_dom_javascript+import "ghcjs-dom-javascript" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-javascript" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+#ifdef MIN_VERSION_ghcjs_dom_jsffi+import "ghcjs-dom-jsffi" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-jsffi" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+#if __GLASGOW_HASKELL__ >= 900+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#else+import "jsaddle-dom" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)+import "jsaddle-dom" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)+#endif+#endif+#endif++#endif