32 Commits

Author SHA1 Message Date
hans d6f555d43f version to 0.3.1 2026-08-04 13:12:05 +02:00
hans 93453c351f webview-get-style debugging 2026-07-30 14:59:39 +02:00
hans 62b2af086a webview-get-style debugging 2026-07-30 14:56:05 +02:00
hans af91944aaf webview-get-style debugging 2026-07-30 14:53:19 +02:00
hans 57eb80ce1d webview-get-style debugging 2026-07-30 13:46:13 +02:00
hans 75232b1460 webview-get-style debugging 2026-07-30 13:41:29 +02:00
hans 31b1e82834 webview-get-style debugging 2026-07-30 13:30:36 +02:00
hans ac961f5fe0 webview-get-style debugging 2026-07-30 13:22:38 +02:00
hans 6a4dd25dfe webview-get-style debugging 2026-07-30 13:19:01 +02:00
hans 97313c1357 webview-get-style debugging 2026-07-30 12:59:37 +02:00
hans 9e6a2a83f4 webview-get-style debugging 2026-07-30 12:54:36 +02:00
hans f29bad676f webview-get-style debugging 2026-07-30 12:29:50 +02:00
hans 41cfd5abd6 solving bug in webview-get-style 2026-07-30 11:56:31 +02:00
hans c02fe6ee99 solving bug in webview-get-style 2026-07-30 11:53:06 +02:00
hans 39b6e1adf5 solving bug in webview-get-style 2026-07-30 11:44:21 +02:00
hans d8ed6235ef racket-mimetypes needs to be a dependency in info.rkt. 2026-07-28 09:05:31 +02:00
hans 13ddedbc11 Mimetypes is now in a module: racket-mimetypes. 2026-07-27 13:31:11 +02:00
hans d33e8164c8 QtWebEngine select popup rendering issue observed with older Qt 6.x.
Symptom: native HTML <select> popup keeps growing/repainting while open;
QtWebEngine process busy, Racket process idle.
Resolved by upgrading to Qt 6.11.1.
2026-07-07 19:24:46 +02:00
hans 9caa41a6f5 Windows has been migrated to Qt 6.11.1 2026-07-07 17:57:56 +02:00
hans 48076b8a38 (js (= x y)) does noet work, needs to be (js (== x y)) 2026-07-03 22:02:43 +02:00
hans 8eeb02a9fa display weg 2026-07-03 19:14:58 +02:00
hans ee5cc863fa Don't display javascript code 2026-07-03 14:32:57 +02:00
hans 9a670acf15 js-maker integration 2026-07-02 15:36:03 +02:00
hans d71f326d88 js-maker integration part 1 2026-06-01 20:18:21 +02:00
hans 231d30c561 migrating to js-maker 2026-05-28 08:17:25 +02:00
hans 325e890737 webview-call-js can return #f, this is now an accepted return value in other webview-.. functions that make use of call-js. 2026-05-19 13:34:52 +02:00
hans c1b0d8559c unexpected result from call-js corrected 2026-05-18 12:57:40 +02:00
hans dff979350a debug webview-call-js 2026-05-18 11:49:48 +02:00
hans 18cd4d3bd9 js-tranform documentented. 2026-05-16 23:17:59 +02:00
hans 3cb7f56167 Repair 2026-05-16 12:45:20 +02:00
hans cc26bd7e13 Merge branch 'main' of https://git.dijkewijk.nl/hans/racket-webview 2026-05-16 12:43:47 +02:00
hans e8acb62f6b Rearranged documentation 2026-05-16 12:40:05 +02:00
13 changed files with 711 additions and 938 deletions
+9 -1
View File
@@ -1,3 +1,11 @@
# racket-webview
Webview integration for racket
Webview integration for racket
## Release v0.1.8
Uses release v0.2.2 of racket-webview-qt.
QtWebEngine select popup rendering issue observed with older Qt 6.x.
Symptom: native HTML <select> popup keeps growing/repainting while open;
QtWebEngine process busy, Racket process idle.
Resolved by upgrading to Qt 6.11.1.
+5
View File
@@ -19,6 +19,11 @@
</div>
<p><span id="pos">screen coöords</span></p>
<h2>Opening a link to some website</h2>
<label for="sel-lang">Hoi:</label>
<select id="sel-lang">
<option value="nl" selected="selected">Nederlands</option>
<option value="en">English</option>
</select>
<p>
<ul>
<li><a href="https://wikipedia.org">To Wikipedia</a></li>
+4 -16
View File
@@ -1,28 +1,14 @@
#lang info
(define pkg-authors '(hnmdijkema))
(define version "0.1.6")
(define version "0.1.9")
(define license 'MIT)
(define collection "racket-webview")
(define pkg-desc "racket-webview - A Web Based GUI library, based on a Qt WebEngine backend")
(define scribblings
'(
("scrbl/racket-webview-intro.scrbl" () (gui-library) "racket-webview-introduction")
("scrbl/wv-context.scrbl" () (gui-library) "wv-context")
("scrbl/wv-settings.scrbl" () (gui-library) "wv-settings")
("scrbl/wv-window.scrbl" () (gui-library) "wv-window")
("scrbl/wv-tray.scrbl" () (gui-library) "wv-tray")
("scrbl/menu.scrbl" () (gui-library) "menu")
("scrbl/wv-dialog.scrbl" () (gui-library) "wv-dialog")
("scrbl/wv-element.scrbl" () (gui-library) "wv-element")
("scrbl/wv-input.scrbl" () (gui-library) "wv-input")
("scrbl/racket-webview-qt.scrbl" () (gui-library) "racket-webview-qt")
("scrbl/racket-webview.scrbl" () (gui-library) "racket-webview")
("scrbl/rgba.scrbl" () (gui-library) "rgba")
("scrbl/mimetypes.scrbl" () (gui-library) "mimetypes")
("scrbl/rktwebview-api.scrbl" () (gui-library) "rktwebview-api")
("scrbl/rktwebviewqt-internals.scrbl" () (gui-library) "rktwebviewqt-internals")
("scrbl/racket-webview-collection.scrbl" (multi-page) (gui-library 0) "racket-webview")
)
)
@@ -42,6 +28,8 @@
"web-server-lib"
"net-cookies-lib"
"simple-log"
"js-maker"
"racket-mimetypes"
)
)
-2
View File
@@ -9,7 +9,6 @@
(require "wv-input.rkt")
(require "wv-tray.rkt")
(require "rgba.rkt")
(require "mimetypes.rkt")
(require "menu.rkt")
(require "private/js-transform.rkt")
@@ -20,7 +19,6 @@
"wv-input.rkt"
"wv-tray.rkt"
"rgba.rkt"
"mimetypes.rkt"
"menu.rkt"
"racket-webview-downloader.rkt"
"racket-webview.rkt"
-724
View File
@@ -1,724 +0,0 @@
#lang racket/base
(require racket/contract)
(provide mimetype-for-ext)
(define/contract (mimetype-for-ext ext)
(-> (or/c string? symbol?) string?)
(hash-ref mimetypes
(if (string? ext) (string->symbol ext) ext)
"application/octet-stream"))
(define mimetypes (make-hash))
(define-syntax addMimeType
(syntax-rules ()
((_ description http-mimetype extensions description2)
(for-each (λ (mimetype)
(unless (hash-has-key? mimetypes mimetype)
(hash-set! mimetypes mimetype http-mimetype)))
extensions))))
(addMimeType "3D Crossword Plugin" "application/vnd.hzn-3d-crossword" '(x3d) "IANA: 3D Crossword Plugin")
(addMimeType "3GP" "video/3gpp" '(3gp) "Wikipedia: 3GP")
(addMimeType "3GP2" "video/3gpp2" '(3g2) "Wikipedia: 3G2")
(addMimeType "3GPP MSEQ File" "application/vnd.mseq" '(mseq) "IANA: 3GPP MSEQ File")
(addMimeType "3M Post It Notes" "application/vnd.3m.post-it-notes" '(pwn) "IANA: 3M Post It Notes")
(addMimeType "3rd Generation Partnership Project - Pic Large" "application/vnd.3gpp.pic-bw-large" '(plb) "3GPP")
(addMimeType "3rd Generation Partnership Project - Pic Small" "application/vnd.3gpp.pic-bw-small" '(psb) "3GPP")
(addMimeType "3rd Generation Partnership Project - Pic Var" "application/vnd.3gpp.pic-bw-var" '(pvb) "3GPP")
(addMimeType "3rd Generation Partnership Project - Transaction Capabilities Application Part" "application/vnd.3gpp2.tcap" '(tcap) "3GPP")
(addMimeType "7-Zip" "application/x-7z-compressed" '(7z) "Wikipedia: 7-Zip")
(addMimeType "AbiWord" "application/x-abiword" '(abw) "Wikipedia: AbiWord")
(addMimeType "Ace Archive" "application/x-ace-compressed" '(ace) "Wikipedia: ACE")
(addMimeType "Active Content Compression" "application/vnd.americandynamics.acc" '(acc) "IANA: Active Content Compression")
(addMimeType "ACU Cobol" "application/vnd.acucobol" '(acu) "IANA: ACU Cobol")
(addMimeType "ACU Cobol" "application/vnd.acucorp" '(atc) "IANA: ACU Cobol")
(addMimeType "Adaptive differential pulse-code modulation" "audio/adpcm" '(adp) "Wikipedia: ADPCM")
(addMimeType "Adobe (Macropedia) Authorware - Binary File" "application/x-authorware-bin" '(aab) "Wikipedia: Authorware")
(addMimeType "Adobe (Macropedia) Authorware - Map" "application/x-authorware-map" '(aam) "Wikipedia: Authorware")
(addMimeType "Adobe (Macropedia) Authorware - Segment File" "application/x-authorware-seg" '(aas) "Wikipedia: Authorware")
(addMimeType "Adobe AIR Application" "application/vnd.adobe.air-application-installer-package+zip" '(air) "Building AIR Applications")
(addMimeType "Adobe Flash" "application/x-shockwave-flash" '(swf) "Wikipedia: Adobe Flash")
(addMimeType "Adobe Flex Project" "application/vnd.adobe.fxp" '(fxp) "IANA: Adobe Flex Project")
(addMimeType "Adobe Portable Document Format" "application/pdf" '(pdf) "Adobe PDF")
(addMimeType "Adobe PostScript Printer Description File Format" "application/vnd.cups-ppd" '(ppd) "IANA: Cups")
(addMimeType "Adobe Shockwave Player" "application/x-director" '(dir) "Wikipedia: Adobe Shockwave Player")
(addMimeType "Adobe XML Data Package" "application/vnd.adobe.xdp+xml" '(xdp) "Wikipedia: XML Data Package")
(addMimeType "Adobe XML Forms Data Format" "application/vnd.adobe.xfdf" '(xfdf) "Wikipedia: XML Portable Document Format")
(addMimeType "Advanced Audio Coding (AAC)" "audio/x-aac" '(aac) "Wikipedia: AAC")
(addMimeType "Ahead AIR Application" "application/vnd.ahead.space" '(ahead) "IANA: Ahead AIR Application")
(addMimeType "AirZip FileSECURE" "application/vnd.airzip.filesecure.azf" '(azf) "IANA: AirZip")
(addMimeType "AirZip FileSECURE" "application/vnd.airzip.filesecure.azs" '(azs) "IANA: AirZip")
(addMimeType "Amazon Kindle eBook format" "application/vnd.amazon.ebook" '(azw) "Kindle Direct Publishing")
(addMimeType "AmigaDE" "application/vnd.amiga.ami" '(ami) "IANA: Amiga")
(addMimeType "Andrew Toolkit" "application/andrew-inset" '(N/A) "IANA - Andrew Inset")
(addMimeType "Android Package Archive" "application/vnd.android.package-archive" '(apk) "Wikipedia: APK File Format")
(addMimeType "ANSER-WEB Terminal Client - Certificate Issue" "application/vnd.anser-web-certificate-issue-initiation" '(cii) "IANA: ANSWER-WEB")
(addMimeType "ANSER-WEB Terminal Client - Web Funds Transfer" "application/vnd.anser-web-funds-transfer-initiation" '(fti) "IANA: ANSWER-WEB")
(addMimeType "Antix Game Player" "application/vnd.antix.game-component" '(atx) "IANA: Antix Game Component")
(addMimeType "Apple Disk Image" "application/x-apple-diskimage" '(dmg) "Apple Disk Image")
(addMimeType "Apple Installer Package" "application/vnd.apple.installer+xml" '(mpkg) "IANA: Apple Installer")
(addMimeType "Applixware" "application/applixware" '(aw) "Vistasource")
(addMimeType "Archipelago Lesson Player" "application/vnd.hhe.lesson-player" '(les) "IANA: Archipelago Lesson Player")
(addMimeType "Archive document - Multiple Fils Embedded" "application/x-freearc" '(arc) "FreeArc")
(addMimeType "Arista Networks Software Image" "application/vnd.aristanetworks.swi" '(swi) "IANA: Arista Networks Software Image")
(addMimeType "Assembler Source File" "text/x-asm" '(s) "Wikipedia: Assembly")
(addMimeType "Atom Publishing Protocol" "application/atomcat+xml" '(atomcat) "RFC 5023")
(addMimeType "Atom Publishing Protocol Service Document" "application/atomsvc+xml" '(atomsvc) "RFC 5023")
(addMimeType "Atom Syndication Format" "application/atom+xml" '(atom xml) "RFC 4287")
(addMimeType "Attribute Certificate" "application/pkix-attr-cert" '(ac) "RFC 5877")
(addMimeType "Audio Interchange File Format" "audio/x-aiff" '(aif) "Wikipedia: Audio Interchange File Format")
(addMimeType "Audio Video Interleave (AVI)" "video/x-msvideo" '(avi) "Wikipedia: AVI")
(addMimeType "Audiograph" "application/vnd.audiograph" '(aep) "IANA: Audiograph")
(addMimeType "AutoCAD DXF" "image/vnd.dxf" '(dxf) "Wikipedia: AutoCAD DXF")
(addMimeType "Autodesk Design Web Format (DWF)" "model/vnd.dwf" '(dwf) "Wikipedia: Design Web Format")
(addMimeType "AV1 Image File" "image/avif" '(avif) "AV1 Image File Format")
(addMimeType "BAS Partitur Format" "text/plain-bas" '(par) "Phonetik BAS")
(addMimeType "Binary CPIO Archive" "application/x-bcpio" '(bcpio) "Wikipedia: cpio")
(addMimeType "Binary Data" "application/octet-stream" '(bin) "")
(addMimeType "Bitmap Image File" "image/bmp" '(bmp) "Wikipedia: BMP File Format")
(addMimeType "BitTorrent" "application/x-bittorrent" '(torrent) "Wikipedia: BitTorrent")
(addMimeType "Blackberry COD File" "application/vnd.rim.cod" '(cod) "")
(addMimeType "Blueice Research Multipass" "application/vnd.blueice.multipass" '(mpm) "IANA: Multipass")
(addMimeType "BMI Drawing Data Interchange" "application/vnd.bmi" '(bmi) "IANA: BMI")
(addMimeType "Bourne Shell Script" "application/x-sh" '(sh) "Wikipedia: Bourne Shell")
(addMimeType "BTIF" "image/prs.btif" '(btif) "IANA: BTIF")
(addMimeType "BusinessObjects" "application/vnd.businessobjects" '(rep) "IANA: BusinessObjects")
(addMimeType "Bzip Archive" "application/x-bzip" '(bz) "Wikipedia: Bzip")
(addMimeType "Bzip2 Archive" "application/x-bzip2" '(bz2) "Wikipedia: Bzip")
(addMimeType "C Shell Script" "application/x-csh" '(csh) "Wikipedia: C Shell")
(addMimeType "C Source File" "text/x-c" '(c) "Wikipedia: C Programming Language")
(addMimeType "CambridgeSoft Chem Draw" "application/vnd.chemdraw+xml" '(cdxml) "IANA: Chem Draw")
(addMimeType "Cascading Style Sheets (CSS)" "text/css" '(css) "Wikipedia: CSS")
(addMimeType "CD Audio" "application/x-cdf" '(cda) "Wikipedia: CDA File")
(addMimeType "ChemDraw eXchange file" "chemical/x-cdx" '(cdx) "ChemDraw eXchange file")
(addMimeType "Chemical Markup Language" "chemical/x-cml" '(cml) "Wikipedia: Chemical Markup Language")
(addMimeType "Chemical Style Markup Language" "chemical/x-csml" '(csml) "Wikipedia: Chemical Style Markup Language")
(addMimeType "CIM Database" "application/vnd.contact.cmsg" '(cdbcmsg) "IANA: CIM Database")
(addMimeType "Claymore Data Files" "application/vnd.claymore" '(cla) "IANA: Claymore")
(addMimeType "Clonk Game" "application/vnd.clonk.c4group" '(c4g) "IANA: Clonk")
(addMimeType "Close Captioning - Subtitle" "image/vnd.dvb.subtitle" '(sub) "Wikipedia: Closed Captioning")
(addMimeType "Cloud Data Management Interface (CDMI) - Capability" "application/cdmi-capability" '(cdmia) "RFC 6208")
(addMimeType "Cloud Data Management Interface (CDMI) - Contaimer" "application/cdmi-container" '(cdmic) "RFC 6209")
(addMimeType "Cloud Data Management Interface (CDMI) - Domain" "application/cdmi-domain" '(cdmid) "RFC 6210")
(addMimeType "Cloud Data Management Interface (CDMI) - Object" "application/cdmi-object" '(cdmio) "RFC 6211")
(addMimeType "Cloud Data Management Interface (CDMI) - Queue" "application/cdmi-queue" '(cdmiq) "RFC 6212")
(addMimeType "ClueTrust CartoMobile - Config" "application/vnd.cluetrust.cartomobile-config" '(c11amc) "IANA: CartoMobile")
(addMimeType "ClueTrust CartoMobile - Config Package" "application/vnd.cluetrust.cartomobile-config-pkg" '(c11amz) "IANA: CartoMobile")
(addMimeType "CMU Image" "image/x-cmu-raster" '(ras) "")
(addMimeType "COLLADA" "model/vnd.collada+xml" '(dae) "IANA: COLLADA")
(addMimeType "Comma-Seperated Values" "text/csv" '(csv) "Wikipedia: CSV")
(addMimeType "Compact Pro" "application/mac-compactpro" '(cpt) "Compact Pro")
(addMimeType "Compiled Wireless Markup Language (WMLC)" "application/vnd.wap.wmlc" '(wmlc) "IANA: WMLC")
(addMimeType "Computer Graphics Metafile" "image/cgm" '(cgm) "Wikipedia: Computer Graphics Metafile")
(addMimeType "CoolTalk" "x-conference/x-cooltalk" '(ice) "Wikipedia: CoolTalk")
(addMimeType "Corel Metafile Exchange (CMX)" "image/x-cmx" '(cmx) "Wikipedia: CorelDRAW")
(addMimeType "CorelXARA" "application/vnd.xara" '(xar) "IANA: CorelXARA")
(addMimeType "CosmoCaller" "application/vnd.cosmocaller" '(cmc) "IANA: CosmoCaller")
(addMimeType "CPIO Archive" "application/x-cpio" '(cpio) "Wikipedia: cpio")
(addMimeType "CrickSoftware - Clicker" "application/vnd.crick.clicker" '(clkx) "IANA: Clicker")
(addMimeType "CrickSoftware - Clicker - Keyboard" "application/vnd.crick.clicker.keyboard" '(clkk) "IANA: Clicker")
(addMimeType "CrickSoftware - Clicker - Palette" "application/vnd.crick.clicker.palette" '(clkp) "IANA: Clicker")
(addMimeType "CrickSoftware - Clicker - Template" "application/vnd.crick.clicker.template" '(clkt) "IANA: Clicker")
(addMimeType "CrickSoftware - Clicker - Wordbank" "application/vnd.crick.clicker.wordbank" '(clkw) "IANA: Clicker")
(addMimeType "Critical Tools - PERT Chart EXPERT" "application/vnd.criticaltools.wbs+xml" '(wbs) "IANA: Critical Tools")
(addMimeType "CryptoNote" "application/vnd.rig.cryptonote" '(cryptonote) "IANA: CryptoNote")
(addMimeType "Crystallographic Interchange Format" "chemical/x-cif" '(cif) "Crystallographic Interchange Format")
(addMimeType "CrystalMaker Data Format" "chemical/x-cmdf" '(cmdf) "CrystalMaker Data Format")
(addMimeType "CU-SeeMe" "application/cu-seeme" '(cu) "White Pine")
(addMimeType "CU-Writer" "application/prs.cww" '(cww) "")
(addMimeType "Curl - Applet" "text/vnd.curl" '(curl) "Curl Applet")
(addMimeType "Curl - Detached Applet" "text/vnd.curl.dcurl" '(dcurl) "Curl Detached Applet")
(addMimeType "Curl - Manifest File" "text/vnd.curl.mcurl" '(mcurl) "Curl Manifest File")
(addMimeType "Curl - Source Code" "text/vnd.curl.scurl" '(scurl) "Curl Source Code")
(addMimeType "CURL Applet" "application/vnd.curl.car" '(car) "IANA: CURL Applet")
(addMimeType "CURL Applet" "application/vnd.curl.pcurl" '(pcurl) "IANA: CURL Applet")
(addMimeType "CustomMenu" "application/vnd.yellowriver-custom-menu" '(cmp) "IANA: CustomMenu")
(addMimeType "Data Structure for the Security Suitability of Cryptographic Algorithms" "application/dssc+der" '(dssc) "RFC 5698")
(addMimeType "Data Structure for the Security Suitability of Cryptographic Algorithms" "application/dssc+xml" '(xdssc) "RFC 5698")
(addMimeType "Debian Package" "application/x-debian-package" '(deb) "Wikipedia: Debian Package")
(addMimeType "DECE Audio" "audio/vnd.dece.audio" '(uva) "IANA: Dece Audio")
(addMimeType "DECE Graphic" "image/vnd.dece.graphic" '(uvi) "IANA: DECE Graphic")
(addMimeType "DECE High Definition Video" "video/vnd.dece.hd" '(uvh) "IANA: DECE HD Video")
(addMimeType "DECE Mobile Video" "video/vnd.dece.mobile" '(uvm) "IANA: DECE Mobile Video")
(addMimeType "DECE MP4" "video/vnd.uvvu.mp4" '(uvu) "IANA: DECE MP4")
(addMimeType "DECE PD Video" "video/vnd.dece.pd" '(uvp) "IANA: DECE PD Video")
(addMimeType "DECE SD Video" "video/vnd.dece.sd" '(uvs) "IANA: DECE SD Video")
(addMimeType "DECE Video" "video/vnd.dece.video" '(uvv) "IANA: DECE Video")
(addMimeType "Device Independent File Format (DVI)" "application/x-dvi" '(dvi) "Wikipedia: DVI")
(addMimeType "Digital Siesmograph Networks - SEED Datafiles" "application/vnd.fdsn.seed" '(seed) "IANA: SEED")
(addMimeType "Digital Talking Book" "application/x-dtbook+xml" '(dtb) "Wikipedia: EPUB")
(addMimeType "Digital Talking Book - Resource File" "application/x-dtbresource+xml" '(res) "Digital Talking Book")
(addMimeType "Digital Video Broadcasting" "application/vnd.dvb.ait" '(ait) "IANA: Digital Video Broadcasting")
(addMimeType "Digital Video Broadcasting" "application/vnd.dvb.service" '(svc) "IANA: Digital Video Broadcasting")
(addMimeType "Digital Winds Music" "audio/vnd.digital-winds" '(eol) "IANA: Digital Winds")
(addMimeType "DjVu" "image/vnd.djvu" '(djvu) "Wikipedia: DjVu")
(addMimeType "Document Type Definition" "application/xml-dtd" '(dtd) "W3C DTD")
(addMimeType "Dolby Meridian Lossless Packing" "application/vnd.dolby.mlp" '(mlp) "IANA: Dolby Meridian Lossless Packing")
(addMimeType "Doom Video Game" "application/x-doom" '(wad) "Wikipedia: Doom WAD")
(addMimeType "DPGraph" "application/vnd.dpgraph" '(dpg) "IANA: DPGraph")
(addMimeType "DRA Audio" "audio/vnd.dra" '(dra) "IANA: DRA")
(addMimeType "DreamFactory" "application/vnd.dreamfactory" '(dfac) "IANA: DreamFactory")
(addMimeType "DTS Audio" "audio/vnd.dts" '(dts) "IANA: DTS")
(addMimeType "DTS High Definition Audio" "audio/vnd.dts.hd" '(dtshd) "IANA: DTS HD")
(addMimeType "DWG Drawing" "image/vnd.dwg" '(dwg) "Wikipedia: DWG")
(addMimeType "DynaGeo" "application/vnd.dynageo" '(geo) "IANA: DynaGeo")
(addMimeType "ECMAScript" "application/ecmascript" '(es) "ECMA-357")
(addMimeType "EcoWin Chart" "application/vnd.ecowin.chart" '(mag) "IANA: EcoWin Chart")
(addMimeType "EDMICS 2000" "image/vnd.fujixerox.edmics-mmr" '(mmr) "IANA: EDMICS 2000")
(addMimeType "EDMICS 2000" "image/vnd.fujixerox.edmics-rlc" '(rlc) "IANA: EDMICS 2000")
(addMimeType "Efficient XML Interchange" "application/exi" '(exi) "Efficient XML Interchange (EXI) Best Practices")
(addMimeType "EFI Proteus" "application/vnd.proteus.magazine" '(mgz) "IANA: EFI Proteus")
(addMimeType "Electronic Publication" "application/epub+zip" '(epub) "Wikipedia: EPUB")
(addMimeType "Email Message" "message/rfc822" '(eml) "RFC 2822")
(addMimeType "Enliven Viewer" "application/vnd.enliven" '(nml) "IANA: Enliven Viewer")
(addMimeType "Express by Infoseek" "application/vnd.is-xpr" '(xpr) "IANA: Express by Infoseek")
(addMimeType "eXtended Image File Format (XIFF)" "image/vnd.xiff" '(xif) "IANA: XIFF")
(addMimeType "Extensible Forms Description Language" "application/vnd.xfdl" '(xfdl) "IANA: Extensible Forms Description Language")
(addMimeType "Extensible MultiModal Annotation" "application/emma+xml" '(emma) "EMMA: Extensible MultiModal Annotation markup language")
(addMimeType "EZPix Secure Photo Album" "application/vnd.ezpix-album" '(ez2) "IANA: EZPix Secure Photo Album")
(addMimeType "EZPix Secure Photo Album" "application/vnd.ezpix-package" '(ez3) "IANA: EZPix Secure Photo Album")
(addMimeType "FAST Search & Transfer ASA" "image/vnd.fst" '(fst) "IANA: FAST Search & Transfer ASA")
(addMimeType "FAST Search & Transfer ASA" "video/vnd.fvt" '(fvt) "IANA: FVT")
(addMimeType "FastBid Sheet" "image/vnd.fastbidsheet" '(fbs) "IANA: FastBid Sheet")
(addMimeType "FCS Express Layout Link" "application/vnd.denovo.fcselayout-link" '(fe_launch) "IANA: FCS Express Layout Link")
(addMimeType "Flash Video" "video/x-f4v" '(f4v) "Wikipedia: Flash Video")
(addMimeType "Flash Video" "video/x-flv" '(flv) "Wikipedia: Flash Video")
(addMimeType "FlashPix" "image/vnd.fpx" '(fpx) "IANA: FPX")
(addMimeType "FlashPix" "image/vnd.net-fpx" '(npx) "IANA: FPX")
(addMimeType "FLEXSTOR" "text/vnd.fmi.flexstor" '(flx) "IANA: FLEXSTOR")
(addMimeType "FLI/FLC Animation Format" "video/x-fli" '(fli) "FLI/FLC Animation Format")
(addMimeType "FluxTime Clip" "application/vnd.fluxtime.clip" '(ftc) "IANA: FluxTime Clip")
(addMimeType "Forms Data Format" "application/vnd.fdf" '(fdf) "IANA: Forms Data Format")
(addMimeType "Fortran Source File" "text/x-fortran" '(f) "Wikipedia: Fortran")
(addMimeType "FrameMaker Interchange Format" "application/vnd.mif" '(mif) "IANA: FrameMaker Interchange Format")
(addMimeType "FrameMaker Normal Format" "application/vnd.framemaker" '(fm) "IANA: FrameMaker")
(addMimeType "FreeHand MX" "image/x-freehand" '(fh) "Wikipedia: Macromedia Freehand")
(addMimeType "Friendly Software Corporation" "application/vnd.fsc.weblaunch" '(fsc) "IANA: Friendly Software Corporation")
(addMimeType "Frogans Player" "application/vnd.frogans.fnc" '(fnc) "IANA: Frogans Player")
(addMimeType "Frogans Player" "application/vnd.frogans.ltf" '(ltf) "IANA: Frogans Player")
(addMimeType "Fujitsu - Xerox 2D CAD Data" "application/vnd.fujixerox.ddd" '(ddd) "IANA: Fujitsu DDD")
(addMimeType "Fujitsu - Xerox DocuWorks" "application/vnd.fujixerox.docuworks" '(xdw) "IANA: Docuworks")
(addMimeType "Fujitsu - Xerox DocuWorks Binder" "application/vnd.fujixerox.docuworks.binder" '(xbd) "IANA: Docuworks Binder")
(addMimeType "Fujitsu Oasys" "application/vnd.fujitsu.oasys" '(oas) "IANA: Fujitsu Oasys")
(addMimeType "Fujitsu Oasys" "application/vnd.fujitsu.oasys2" '(oa2) "IANA: Fujitsu Oasys")
(addMimeType "Fujitsu Oasys" "application/vnd.fujitsu.oasys3" '(oa3) "IANA: Fujitsu Oasys")
(addMimeType "Fujitsu Oasys" "application/vnd.fujitsu.oasysgp" '(fg5) "IANA: Fujitsu Oasys")
(addMimeType "Fujitsu Oasys" "application/vnd.fujitsu.oasysprs" '(bh2) "IANA: Fujitsu Oasys")
(addMimeType "FutureSplash Animator" "application/x-futuresplash" '(spl) "Wikipedia: FutureSplash Animator")
(addMimeType "FuzzySheet" "application/vnd.fuzzysheet" '(fzs) "IANA: FuzySheet")
(addMimeType "G3 Fax Image" "image/g3fax" '(g3) "Wikipedia: G3 Fax Image")
(addMimeType "GameMaker ActiveX" "application/vnd.gmx" '(gmx) "IANA: GameMaker ActiveX")
(addMimeType "Gen-Trix Studio" "model/vnd.gtw" '(gtw) "IANA: GTW")
(addMimeType "Genomatix Tuxedo Framework" "application/vnd.genomatix.tuxedo" '(txd) "IANA: Genomatix Tuxedo Framework")
(addMimeType "GeoGebra" "application/vnd.geogebra.file" '(ggb) "IANA: GeoGebra")
(addMimeType "GeoGebra" "application/vnd.geogebra.tool" '(ggt) "IANA: GeoGebra")
(addMimeType "Geometric Description Language (GDL)" "model/vnd.gdl" '(gdl) "IANA: GDL")
(addMimeType "GeoMetry Explorer" "application/vnd.geometry-explorer" '(gex) "IANA: GeoMetry Explorer")
(addMimeType "GEONExT and JSXGraph" "application/vnd.geonext" '(gxt) "IANA: GEONExT and JSXGraph")
(addMimeType "GeoplanW" "application/vnd.geoplan" '(g2w) "IANA: GeoplanW")
(addMimeType "GeospacW" "application/vnd.geospace" '(g3w) "IANA: GeospacW")
(addMimeType "Ghostscript Font" "application/x-font-ghostscript" '(gsf) "Wikipedia: Ghostscript")
(addMimeType "Glyph Bitmap Distribution Format" "application/x-font-bdf" '(bdf) "Wikipedia: Glyph Bitmap Distribution Format")
(addMimeType "GNU Tar Files" "application/x-gtar" '(gtar) "GNU Tar")
(addMimeType "GNU Texinfo Document" "application/x-texinfo" '(texinfo) "Wikipedia: Texinfo")
(addMimeType "Gnumeric" "application/x-gnumeric" '(gnumeric) "Wikipedia: Gnumeric")
(addMimeType "Google Earth - KML" "application/vnd.google-earth.kml+xml" '(kml) "IANA: Google Earth")
(addMimeType "Google Earth - Zipped KML" "application/vnd.google-earth.kmz" '(kmz) "IANA: Google Earth")
(addMimeType "GPS eXchange Format" "application/gpx+xml" '(gpx) "GPS eXchange Format")
(addMimeType "GrafEq" "application/vnd.grafeq" '(gqf) "IANA: GrafEq")
(addMimeType "Graphics Interchange Format" "image/gif" '(gif) "Wikipedia: Graphics Interchange Format")
(addMimeType "Graphviz" "text/vnd.graphviz" '(gv) "IANA: Graphviz")
(addMimeType "Groove - Account" "application/vnd.groove-account" '(gac) "IANA: Groove")
(addMimeType "Groove - Help" "application/vnd.groove-help" '(ghf) "IANA: Groove")
(addMimeType "Groove - Identity Message" "application/vnd.groove-identity-message" '(gim) "IANA: Groove")
(addMimeType "Groove - Injector" "application/vnd.groove-injector" '(grv) "IANA: Groove")
(addMimeType "Groove - Tool Message" "application/vnd.groove-tool-message" '(gtm) "IANA: Groove")
(addMimeType "Groove - Tool Template" "application/vnd.groove-tool-template" '(tpl) "IANA: Groove")
(addMimeType "Groove - Vcard" "application/vnd.groove-vcard" '(vcg) "IANA: Groove")
(addMimeType "GZip" "application/gzip" '(gz) "Wikipedia: GZip")
(addMimeType "H.261" "video/h261" '(h261) "Wikipedia: H.261")
(addMimeType "H.263" "video/h263" '(h263) "Wikipedia: H.263")
(addMimeType "H.264" "video/h264" '(h264) "Wikipedia: H.264")
(addMimeType "Hewlett Packard Instant Delivery" "application/vnd.hp-hpid" '(hpid) "IANA: Hewlett Packard Instant Delivery")
(addMimeType "Hewlett-Packard's WebPrintSmart" "application/vnd.hp-hps" '(hps) "IANA: Hewlett-Packard's WebPrintSmart")
(addMimeType "Hierarchical Data Format" "application/x-hdf" '(hdf) "Wikipedia: Hierarchical Data Format")
(addMimeType "Hit'n'Mix" "audio/vnd.rip" '(rip) "IANA: Hit'n'Mix")
(addMimeType "Homebanking Computer Interface (HBCI)" "application/vnd.hbci" '(hbci) "IANA: HBCI")
(addMimeType "HP Indigo Digital Press - Job Layout Languate" "application/vnd.hp-jlyt" '(jlt) "IANA: HP Job Layout Language")
(addMimeType "HP Printer Command Language" "application/vnd.hp-pcl" '(pcl) "IANA: HP Printer Command Language")
(addMimeType "HP-GL/2 and HP RTL" "application/vnd.hp-hpgl" '(hpgl) "IANA: HP-GL/2 and HP RTL")
(addMimeType "HV Script" "application/vnd.yamaha.hv-script" '(hvs) "IANA: HV Script")
(addMimeType "HV Voice Dictionary" "application/vnd.yamaha.hv-dic" '(hvd) "IANA: HV Voice Dictionary")
(addMimeType "HV Voice Parameter" "application/vnd.yamaha.hv-voice" '(hvp) "IANA: HV Voice Parameter")
(addMimeType "Hydrostatix Master Suite" "application/vnd.hydrostatix.sof-data" '(sfd-hdstx) "IANA: Hydrostatix Master Suite")
(addMimeType "Hyperstudio" "application/hyperstudio" '(stk) "IANA - Hyperstudio")
(addMimeType "Hypertext Application Language" "application/vnd.hal+xml" '(hal) "IANA: HAL")
(addMimeType "HyperText Markup Language (HTML)" "text/html" '(html) "Wikipedia: HTML")
(addMimeType "IBM DB2 Rights Manager" "application/vnd.ibm.rights-management" '(irm) "IANA: IBM DB2 Rights Manager")
(addMimeType "IBM Electronic Media Management System - Secure Container" "application/vnd.ibm.secure-container" '(sc) "IANA: EMMS")
(addMimeType "iCalendar" "text/calendar" '(ics) "Wikipedia: iCalendar")
(addMimeType "ICC profile" "application/vnd.iccprofile" '(icc) "IANA: ICC profile")
(addMimeType "Icon Image" "image/x-icon" '(ico) "Wikipedia: ICO File Format")
(addMimeType "igLoader" "application/vnd.igloader" '(igl) "IANA: igLoader")
(addMimeType "Image Exchange Format" "image/ief" '(ief) "RFC 1314")
(addMimeType "ImmerVision PURE Players" "application/vnd.immervision-ivp" '(ivp) "IANA: ImmerVision PURE Players")
(addMimeType "ImmerVision PURE Players" "application/vnd.immervision-ivu" '(ivu) "IANA: ImmerVision PURE Players")
(addMimeType "IMS Networks" "application/reginfo+xml" '(rif) "")
(addMimeType "In3D - 3DML" "text/vnd.in3d.3dml" '(3dml) "IANA: In3D")
(addMimeType "In3D - 3DML" "text/vnd.in3d.spot" '(spot) "IANA: In3D")
(addMimeType "Initial Graphics Exchange Specification (IGES)" "model/iges" '(igs) "Wikipedia: IGES")
(addMimeType "Interactive Geometry Software" "application/vnd.intergeo" '(i2g) "IANA: Interactive Geometry Software")
(addMimeType "Interactive Geometry Software Cinderella" "application/vnd.cinderella" '(cdy) "IANA: Cinderella")
(addMimeType "Intercon FormNet" "application/vnd.intercon.formnet" '(xpw) "IANA: Intercon FormNet")
(addMimeType "International Society for Advancement of Cytometry" "application/vnd.isac.fcs" '(fcs) "IANA: International Society for Advancement of Cytometry")
(addMimeType "Internet Protocol Flow Information Export" "application/ipfix" '(ipfix) "RFC 3917")
(addMimeType "Internet Public Key Infrastructure - Certificate" "application/pkix-cert" '(cer) "RFC 2585")
(addMimeType "Internet Public Key Infrastructure - Certificate Management Protocole" "application/pkixcmp" '(pki) "RFC 2585")
(addMimeType "Internet Public Key Infrastructure - Certificate Revocation Lists" "application/pkix-crl" '(crl) "RFC 2585")
(addMimeType "Internet Public Key Infrastructure - Certification Path" "application/pkix-pkipath" '(pkipath) "RFC 2585")
(addMimeType "IOCOM Visimeet" "application/vnd.insors.igm" '(igm) "IANA: IOCOM Visimeet")
(addMimeType "IP Unplugged Roaming Client" "application/vnd.ipunplugged.rcprofile" '(rcprofile) "IANA: IP Unplugged Roaming Client")
(addMimeType "iRepository / Lucidoc Editor" "application/vnd.irepository.package+xml" '(irp) "IANA: iRepository / Lucidoc Editor")
(addMimeType "J2ME App Descriptor" "text/vnd.sun.j2me.app-descriptor" '(jad) "IANA: J2ME App Descriptor")
(addMimeType "Java Archive" "application/java-archive" '(jar) "Wikipedia: JAR file format")
(addMimeType "Java Bytecode File" "application/java-vm" '(class) "Wikipedia: Java Bytecode")
(addMimeType "Java Network Launching Protocol" "application/x-java-jnlp-file" '(jnlp) "Wikipedia: Java Web Start")
(addMimeType "Java Serialized Object" "application/java-serialized-object" '(ser) "Java Serialization API")
(addMimeType "Java Source File" "text/x-java-source,java" '(java) "Wikipedia: Java")
(addMimeType "JavaScript" "application/javascript" '(js) "JavaScript")
(addMimeType "JavaScript Module" "text/javascript" '(mjs) "Wikipedia: Javascript")
(addMimeType "JavaScript Module" "text/javascript" '(mjs) "ECMAScript modules")
(addMimeType "JavaScript Object Notation (JSON)" "application/json" '(json) "Wikipedia: JSON")
(addMimeType "Joda Archive" "application/vnd.joost.joda-archive" '(joda) "IANA: Joda Archive")
(addMimeType "JPEG Image" "image/jpeg" '(jpeg jpg) "RFC 1314")
(addMimeType "JPEG 2000 Compound Image File Format" "video/jpm" '(jpm) "IANA: JPM")
(addMimeType "JPEG Image (Citrix client)" "image/x-citrix-jpeg" '(jpeg jpg) "RFC 1314")
(addMimeType "JPEG Image (Progressive)" "image/pjpeg" '(pjpeg) "JPEG image compression FAQ")
(addMimeType "JPGVideo" "video/jpeg" '(jpgv) "RFC 3555")
(addMimeType "JSON - Linked Data" "application/ld+json" '(jsonld) "Wikipedia: JSON-LD")
(addMimeType "Kahootz" "application/vnd.kahootz" '(ktz) "IANA: Kahootz")
(addMimeType "Karaoke on Chipnuts Chipsets" "application/vnd.chipnuts.karaoke-mmd" '(mmd) "IANA: Chipnuts Karaoke")
(addMimeType "KDE KOffice Office Suite - Karbon" "application/vnd.kde.karbon" '(karbon) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - KChart" "application/vnd.kde.kchart" '(chrt) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kformula" "application/vnd.kde.kformula" '(kfo) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kivio" "application/vnd.kde.kivio" '(flw) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kontour" "application/vnd.kde.kontour" '(kon) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kpresenter" "application/vnd.kde.kpresenter" '(kpr) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kspread" "application/vnd.kde.kspread" '(ksp) "IANA: KDE KOffice Office Suite")
(addMimeType "KDE KOffice Office Suite - Kword" "application/vnd.kde.kword" '(kwd) "IANA: KDE KOffice Office Suite")
(addMimeType "Kenamea App" "application/vnd.kenameaapp" '(htke) "IANA: Kenamea App")
(addMimeType "Kidspiration" "application/vnd.kidspiration" '(kia) "IANA: Kidspiration")
(addMimeType "Kinar Applications" "application/vnd.kinar" '(kne) "IANA: Kina Applications")
(addMimeType "Kodak Storyshare" "application/vnd.kodak-descriptor" '(sse) "IANA: Kodak Storyshare")
(addMimeType "Laser App Enterprise" "application/vnd.las.las+xml" '(lasxml) "IANA: Laser App Enterprise")
(addMimeType "LaTeX" "application/x-latex" '(latex) "Wikipedia: LaTeX")
(addMimeType "Life Balance - Desktop Edition" "application/vnd.llamagraphics.life-balance.desktop" '(lbd) "IANA: Life Balance")
(addMimeType "Life Balance - Exchange Format" "application/vnd.llamagraphics.life-balance.exchange+xml" '(lbe) "IANA: Life Balance")
(addMimeType "Lightspeed Audio Lab" "application/vnd.jam" '(jam) "IANA: Lightspeed Audio Lab")
(addMimeType "Lotus 1-2-3" "application/vnd.lotus-1-2-3" '(123) "IANA: Lotus 1-2-3")
(addMimeType "Lotus Approach" "application/vnd.lotus-approach" '(apr) "IANA: Lotus Approach")
(addMimeType "Lotus Freelance" "application/vnd.lotus-freelance" '(pre) "IANA: Lotus Freelance")
(addMimeType "Lotus Notes" "application/vnd.lotus-notes" '(nsf) "IANA: Lotus Notes")
(addMimeType "Lotus Organizer" "application/vnd.lotus-organizer" '(org) "IANA: Lotus Organizer")
(addMimeType "Lotus Screencam" "application/vnd.lotus-screencam" '(scm) "IANA: Lotus Screencam")
(addMimeType "Lotus Wordpro" "application/vnd.lotus-wordpro" '(lwp) "IANA: Lotus Wordpro")
(addMimeType "Lucent Voice" "audio/vnd.lucent.voice" '(lvp) "IANA: Lucent Voice")
(addMimeType "M3U (Multimedia Playlist)" "audio/x-mpegurl" '(m3u) "Wikipedia: M3U")
(addMimeType "M4v" "video/x-m4v" '(m4v) "Wikipedia: M4v")
(addMimeType "Macintosh BinHex 4.0" "application/mac-binhex40" '(hqx) "MacMIME")
(addMimeType "MacPorts Port System" "application/vnd.macports.portpkg" '(portpkg) "IANA: MacPorts Port System")
(addMimeType "MapGuide DBXML" "application/vnd.osgeo.mapguide.package" '(mgp) "IANA: MapGuide DBXML")
(addMimeType "MARC Formats" "application/marc" '(mrc) "RFC 2220")
(addMimeType "MARC21 XML Schema" "application/marcxml+xml" '(mrcx) "RFC 6207")
(addMimeType "Material Exchange Format" "application/mxf" '(mxf) "RFC 4539")
(addMimeType "Mathematica Notebook Player" "application/vnd.wolfram.player" '(nbp) "IANA: Mathematica Notebook Player")
(addMimeType "Mathematica Notebooks" "application/mathematica" '(ma) "IANA - Mathematica")
(addMimeType "Mathematical Markup Language" "application/mathml+xml" '(mathml) "W3C Math Home")
(addMimeType "Mbox database files" "application/mbox" '(mbox) "RFC 4155")
(addMimeType "MedCalc" "application/vnd.medcalcdata" '(mc1) "IANA: MedCalc")
(addMimeType "Media Server Control Markup Language" "application/mediaservercontrol+xml" '(mscml) "RFC 5022")
(addMimeType "MediaRemote" "application/vnd.mediastation.cdkey" '(cdkey) "IANA: MediaRemote")
(addMimeType "Medical Waveform Encoding Format" "application/vnd.mfer" '(mwf) "IANA: Medical Waveform Encoding Format")
(addMimeType "Melody Format for Mobile Platform" "application/vnd.mfmp" '(mfm) "IANA: Melody Format for Mobile Platform")
(addMimeType "Mesh Data Type" "model/mesh" '(msh) "RFC 2077")
(addMimeType "Metadata Authority Description Schema" "application/mads+xml" '(mads) "RFC 6207")
(addMimeType "Metadata Encoding and Transmission Standard" "application/mets+xml" '(mets) "RFC 6207")
(addMimeType "Metadata Object Description Schema" "application/mods+xml" '(mods) "RFC 6207")
(addMimeType "Metalink" "application/metalink4+xml" '(meta4) "Wikipedia: Metalink")
(addMimeType "Micro CADAM Helix D&D" "application/vnd.mcd" '(mcd) "IANA: Micro CADAM Helix D&D")
(addMimeType "Micrografx" "application/vnd.micrografx.flo" '(flo) "IANA: Micrografx")
(addMimeType "Micrografx iGrafx Professional" "application/vnd.micrografx.igx" '(igx) "IANA: Micrografx")
(addMimeType "MICROSEC e-Szign?" "application/vnd.eszigno3+xml" '(es3) "IANA: MICROSEC e-Szign?")
(addMimeType "Microsoft Access" "application/x-msaccess" '(mdb) "Wikipedia: Microsoft Access")
(addMimeType "Microsoft Advanced Systems Format (ASF)" "video/x-ms-asf" '(asf) "Wikipedia: Advanced Systems Format (ASF)")
(addMimeType "Microsoft Application" "application/x-msdownload" '(exe) "Wikipedia: EXE")
(addMimeType "Microsoft Artgalry" "application/vnd.ms-artgalry" '(cil) "IANA: MS Artgalry")
(addMimeType "Microsoft Cabinet File" "application/vnd.ms-cab-compressed" '(cab) "IANA: MS Cabinet File")
(addMimeType "Microsoft Class Server" "application/vnd.ms-ims" '(ims) "IANA: MS Class Server")
(addMimeType "Microsoft ClickOnce" "application/x-ms-application" '(application) "Wikipedia: ClickOnce")
(addMimeType "Microsoft Clipboard Clip" "application/x-msclip" '(clp) "Wikipedia: Clipboard")
(addMimeType "Microsoft Document Imaging Format" "image/vnd.ms-modi" '(mdi) "Wikipedia: Microsoft Document Image Format")
(addMimeType "Microsoft Embedded OpenType" "application/vnd.ms-fontobject" '(eot) "IANA: MS Embedded OpenType")
(addMimeType "Microsoft Excel" "application/vnd.ms-excel" '(xls) "IANA: MS Excel")
(addMimeType "Microsoft Excel - Add-In File" "application/vnd.ms-excel.addin.macroenabled.12" '(xlam) "IANA: MS Excel")
(addMimeType "Microsoft Excel - Binary Workbook" "application/vnd.ms-excel.sheet.binary.macroenabled.12" '(xlsb) "IANA: MS Excel")
(addMimeType "Microsoft Excel - Macro-Enabled Template File" "application/vnd.ms-excel.template.macroenabled.12" '(xltm) "IANA: MS Excel")
(addMimeType "Microsoft Excel - Macro-Enabled Workbook" "application/vnd.ms-excel.sheet.macroenabled.12" '(xlsm) "IANA: MS Excel")
(addMimeType "Microsoft Html Help File" "application/vnd.ms-htmlhelp" '(chm) "IANA:MS Html Help File")
(addMimeType "Microsoft Information Card" "application/x-mscardfile" '(crd) "Wikipedia: Information Card")
(addMimeType "Microsoft Learning Resource Module" "application/vnd.ms-lrm" '(lrm) "IANA: MS Learning Resource Module")
(addMimeType "Microsoft MediaView" "application/x-msmediaview" '(mvb) "Windows Help")
(addMimeType "Microsoft Money" "application/x-msmoney" '(mny) "Wikipedia: Microsoft Money")
(addMimeType "Microsoft Office - OOXML - Presentation" "application/vnd.openxmlformats-officedocument.presentationml.presentation" '(pptx) "IANA: OOXML - Presentation")
(addMimeType "Microsoft Office - OOXML - Presentation (Slide)" "application/vnd.openxmlformats-officedocument.presentationml.slide" '(sldx) "IANA: OOXML - Presentation")
(addMimeType "Microsoft Office - OOXML - Presentation (Slideshow)" "application/vnd.openxmlformats-officedocument.presentationml.slideshow" '(ppsx) "IANA: OOXML - Presentation")
(addMimeType "Microsoft Office - OOXML - Presentation Template" "application/vnd.openxmlformats-officedocument.presentationml.template" '(potx) "IANA: OOXML - Presentation Template")
(addMimeType "Microsoft Office - OOXML - Spreadsheet" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" '(xlsx) "IANA: OOXML - Spreadsheet")
(addMimeType "Microsoft Office - OOXML - Spreadsheet Template" "application/vnd.openxmlformats-officedocument.spreadsheetml.template" '(xltx) "IANA: OOXML - Spreadsheet Template")
(addMimeType "Microsoft Office - OOXML - Word Document" "application/vnd.openxmlformats-officedocument.wordprocessingml.document" '(docx) "IANA: OOXML - Word Document")
(addMimeType "Microsoft Office - OOXML - Word Document Template" "application/vnd.openxmlformats-officedocument.wordprocessingml.template" '(dotx) "IANA: OOXML - Word Document Template")
(addMimeType "Microsoft Office Binder" "application/x-msbinder" '(obd) "Wikipedia: Microsoft Shared Tools")
(addMimeType "Microsoft Office System Release Theme" "application/vnd.ms-officetheme" '(thmx) "IANA: MS Office System Release Theme")
(addMimeType "Microsoft OneNote" "application/onenote" '(onetoc) "MS OneNote 2010")
(addMimeType "Microsoft PlayReady Ecosystem" "audio/vnd.ms-playready.media.pya" '(pya) "IANA: Microsoft PlayReady Ecosystem")
(addMimeType "Microsoft PlayReady Ecosystem Video" "video/vnd.ms-playready.media.pyv" '(pyv) "IANA: Microsoft PlayReady Ecosystem")
(addMimeType "Microsoft PowerPoint" "application/vnd.ms-powerpoint" '(ppt) "IANA: MS PowerPoint")
(addMimeType "Microsoft PowerPoint - Add-in file" "application/vnd.ms-powerpoint.addin.macroenabled.12" '(ppam) "IANA: MS PowerPoint")
(addMimeType "Microsoft PowerPoint - Macro-Enabled Open XML Slide" "application/vnd.ms-powerpoint.slide.macroenabled.12" '(sldm) "IANA: MS PowerPoint")
(addMimeType "Microsoft PowerPoint - Macro-Enabled Presentation File" "application/vnd.ms-powerpoint.presentation.macroenabled.12" '(pptm) "IANA: MS PowerPoint")
(addMimeType "Microsoft PowerPoint - Macro-Enabled Slide Show File" "application/vnd.ms-powerpoint.slideshow.macroenabled.12" '(ppsm) "IANA: MS PowerPoint")
(addMimeType "Microsoft PowerPoint - Macro-Enabled Template File" "application/vnd.ms-powerpoint.template.macroenabled.12" '(potm) "IANA: MS PowerPoint")
(addMimeType "Microsoft Project" "application/vnd.ms-project" '(mpp) "IANA: MS PowerPoint")
(addMimeType "Microsoft Publisher" "application/x-mspublisher" '(pub) "Wikipedia: Microsoft Publisher")
(addMimeType "Microsoft Schedule+" "application/x-msschedule" '(scd) "Wikipedia: Microsoft Schedule Plus")
(addMimeType "Microsoft Silverlight" "application/x-silverlight-app" '(xap) "Wikipedia: Silverlight")
(addMimeType "Microsoft Trust UI Provider - Certificate Trust Link" "application/vnd.ms-pki.stl" '(stl) "IANA: MS Trust UI Provider")
(addMimeType "Microsoft Trust UI Provider - Security Catalog" "application/vnd.ms-pki.seccat" '(cat) "IANA: MS Trust UI Provider")
(addMimeType "Microsoft Visio" "application/vnd.visio" '(vsd) "IANA: Visio")
(addMimeType "Microsoft Visio 2013" "application/vnd.visio2013" '(vsdx) "IANA: Visio")
(addMimeType "Microsoft Windows Media" "video/x-ms-wm" '(wm) "Wikipedia: Advanced Systems Format (ASF)")
(addMimeType "Microsoft Windows Media Audio" "audio/x-ms-wma" '(wma) "Wikipedia: Windows Media Audio")
(addMimeType "Microsoft Windows Media Audio Redirector" "audio/x-ms-wax" '(wax) "Windows Media Metafiles")
(addMimeType "Microsoft Windows Media Audio/Video Playlist" "video/x-ms-wmx" '(wmx) "Wikipedia: Advanced Systems Format (ASF)")
(addMimeType "Microsoft Windows Media Player Download Package" "application/x-ms-wmd" '(wmd) "Wikipedia: Windows Media Player")
(addMimeType "Microsoft Windows Media Player Playlist" "application/vnd.ms-wpl" '(wpl) "IANA: MS Windows Media Player Playlist")
(addMimeType "Microsoft Windows Media Player Skin Package" "application/x-ms-wmz" '(wmz) "Wikipedia: Windows Media Player")
(addMimeType "Microsoft Windows Media Video" "video/x-ms-wmv" '(wmv) "Wikipedia: Advanced Systems Format (ASF)")
(addMimeType "Microsoft Windows Media Video Playlist" "video/x-ms-wvx" '(wvx) "Wikipedia: Advanced Systems Format (ASF)")
(addMimeType "Microsoft Windows Metafile" "application/x-msmetafile" '(wmf) "Wikipedia: Windows Metafile")
(addMimeType "Microsoft Windows Terminal Services" "application/x-msterminal" '(trm) "Wikipedia: Terminal Server")
(addMimeType "Microsoft Word" "application/msword" '(doc) "Wikipedia: Microsoft Word")
(addMimeType "Microsoft Word - Macro-Enabled Document" "application/vnd.ms-word.document.macroenabled.12" '(docm) "IANA: MS Word")
(addMimeType "Microsoft Word - Macro-Enabled Template" "application/vnd.ms-word.template.macroenabled.12" '(dotm) "IANA: MS Word")
(addMimeType "Microsoft Wordpad" "application/x-mswrite" '(wri) "Wikipedia: Wordpad")
(addMimeType "Microsoft Works" "application/vnd.ms-works" '(wps) "IANA: MS Works")
(addMimeType "Microsoft XAML Browser Application" "application/x-ms-xbap" '(xbap) "Wikipedia: XAML Browser")
(addMimeType "Microsoft XML Paper Specification" "application/vnd.ms-xpsdocument" '(xps) "IANA: MS XML Paper Specification")
(addMimeType "MIDI" "audio/midi" '(midi) "Wikipedia: MIDI")
(addMimeType "MIDI - Musical Instrument Digital Interface" "audio/midi" '(mid) "Wikipedia: MIDI")
(addMimeType "MiniPay" "application/vnd.ibm.minipay" '(mpy) "IANA: MiniPay")
(addMimeType "MO:DCA-P" "application/vnd.ibm.modcap" '(afp) "IANA: MO:DCA-P")
(addMimeType "Mobile Information Device Profile" "application/vnd.jcp.javame.midlet-rms" '(rms) "IANA: Mobile Information Device Profile")
(addMimeType "MobileTV" "application/vnd.tmobile-livetv" '(tmo) "IANA: MobileTV")
(addMimeType "Mobipocket" "application/x-mobipocket-ebook" '(prc) "Wikipedia: Mobipocket")
(addMimeType "Mobius Management Systems - Basket file" "application/vnd.mobius.mbk" '(mbk) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - Distribution Database" "application/vnd.mobius.dis" '(dis) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - Policy Definition Language File" "application/vnd.mobius.plc" '(plc) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - Query File" "application/vnd.mobius.mqy" '(mqy) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - Script Language" "application/vnd.mobius.msl" '(msl) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - Topic Index File" "application/vnd.mobius.txf" '(txf) "IANA: Mobius Management Systems")
(addMimeType "Mobius Management Systems - UniversalArchive" "application/vnd.mobius.daf" '(daf) "IANA: Mobius Management Systems")
(addMimeType "mod_fly / fly.cgi" "text/vnd.fly" '(fly) "IANA: Fly")
(addMimeType "Mophun Certificate" "application/vnd.mophun.certificate" '(mpc) "IANA: Mophun Certificate")
(addMimeType "Mophun VM" "application/vnd.mophun.application" '(mpn) "IANA: Mophun VM")
(addMimeType "Motion JPEG 2000" "video/mj2" '(mj2) "IANA: MJ2")
(addMimeType "MPEG Audio" "audio/mpeg" '(mpga) "Wikipedia: MPGA")
(addMimeType "MPEG Transport Stream" "video/mp2t" '(ts) "Wikipedia: MPEG Transport Stream")
(addMimeType "MPEG Url" "video/vnd.mpegurl" '(mxu) "IANA: MPEG Url")
(addMimeType "MPEG Video" "video/mpeg" '(mpeg) "Wikipedia: MPEG")
(addMimeType "MPEG-21" "application/mp21" '(m21) "Wikipedia: MPEG-21")
(addMimeType "MPEG-4 Audio" "audio/mp4" '(mp4a) "Wikipedia: MP4A")
(addMimeType "MPEG-4 Video" "video/mp4" '(mp4) "Wikipedia: MP4")
(addMimeType "MPEG4" "application/mp4" '(mp4) "RFC 4337")
(addMimeType "Multimedia Playlist Unicode" "application/vnd.apple.mpegurl" '(m3u8) "Wikipedia: M3U")
(addMimeType "MUsical Score Interpreted Code Invented for the ASCII designation of Notation" "application/vnd.musician" '(mus) "IANA: MUSICIAN")
(addMimeType "Muvee Automatic Video Editing" "application/vnd.muvee.style" '(msty) "IANA: Muvee")
(addMimeType "MXML" "application/xv+xml" '(mxml) "Wikipedia: MXML")
(addMimeType "N-Gage Game Data" "application/vnd.nokia.n-gage.data" '(ngdat) "IANA: N-Gage Game Data")
(addMimeType "N-Gage Game Installer" "application/vnd.nokia.n-gage.symbian.install" '(n-gage) "IANA: N-Gage Game Installer")
(addMimeType "Navigation Control file for XML (for ePub)" "application/x-dtbncx+xml" '(ncx) "Wikipedia: EPUB")
(addMimeType "Network Common Data Form (NetCDF)" "application/x-netcdf" '(nc) "Wikipedia: NetCDF")
(addMimeType "neuroLanguage" "application/vnd.neurolanguage.nlu" '(nlu) "IANA: neuroLanguage")
(addMimeType "New Moon Liftoff/DNA" "application/vnd.dna" '(dna) "IANA: New Moon Liftoff/DNA")
(addMimeType "NobleNet Directory" "application/vnd.noblenet-directory" '(nnd) "IANA: NobleNet Directory")
(addMimeType "NobleNet Sealer" "application/vnd.noblenet-sealer" '(nns) "IANA: NobleNet Sealer")
(addMimeType "NobleNet Web" "application/vnd.noblenet-web" '(nnw) "IANA: NobleNet Web")
(addMimeType "Nokia Radio Application - Preset" "application/vnd.nokia.radio-preset" '(rpst) "IANA: Nokia Radio Application")
(addMimeType "Nokia Radio Application - Preset" "application/vnd.nokia.radio-presets" '(rpss) "IANA: Nokia Radio Application")
(addMimeType "Notation3" "text/n3" '(n3) "Wikipedia: Notation3")
(addMimeType "Novadigm's RADIA and EDM products" "application/vnd.novadigm.edm" '(edm) "IANA: Novadigm's RADIA and EDM products")
(addMimeType "Novadigm's RADIA and EDM products" "application/vnd.novadigm.edx" '(edx) "IANA: Novadigm's RADIA and EDM products")
(addMimeType "Novadigm's RADIA and EDM products" "application/vnd.novadigm.ext" '(ext) "IANA: Novadigm's RADIA and EDM products")
(addMimeType "NpGraphIt" "application/vnd.flographit" '(gph) "IANA: FloGraphIt")
(addMimeType "Nuera ECELP 4800" "audio/vnd.nuera.ecelp4800" '(ecelp4800) "IANA: ECELP 4800")
(addMimeType "Nuera ECELP 7470" "audio/vnd.nuera.ecelp7470" '(ecelp7470) "IANA: ECELP 7470")
(addMimeType "Nuera ECELP 9600" "audio/vnd.nuera.ecelp9600" '(ecelp9600) "IANA: ECELP 9600")
(addMimeType "Office Document Architecture" "application/oda" '(oda) "RFC 2161")
(addMimeType "Ogg" "application/ogg" '(ogx) "Wikipedia: Ogg")
(addMimeType "Ogg Audio" "audio/ogg" '(oga) "Wikipedia: Ogg")
(addMimeType "Ogg Video" "video/ogg" '(ogv) "Wikipedia: Ogg")
(addMimeType "OMA Download Agents" "application/vnd.oma.dd2+xml" '(dd2) "IANA: OMA Download Agents")
(addMimeType "Open Document Text Web" "application/vnd.oasis.opendocument.text-web" '(oth) "IANA: OpenDocument Text Web")
(addMimeType "Open eBook Publication Structure" "application/oebps-package+xml" '(opf) "Wikipedia: Open eBook")
(addMimeType "Open Financial Exchange" "application/vnd.intu.qbo" '(qbo) "IANA: Open Financial Exchange")
(addMimeType "Open Office Extension" "application/vnd.openofficeorg.extension" '(oxt) "IANA: Open Office Extension")
(addMimeType "Open Score Format" "application/vnd.yamaha.openscoreformat" '(osf) "IANA: Open Score Format")
(addMimeType "Open Web Media Project - Audio" "audio/webm" '(weba) "WebM Project")
(addMimeType "Open Web Media Project - Video" "video/webm" '(webm) "WebM Project")
(addMimeType "OpenDocument Chart" "application/vnd.oasis.opendocument.chart" '(odc) "IANA: OpenDocument Chart")
(addMimeType "OpenDocument Chart Template" "application/vnd.oasis.opendocument.chart-template" '(otc) "IANA: OpenDocument Chart Template")
(addMimeType "OpenDocument Database" "application/vnd.oasis.opendocument.database" '(odb) "IANA: OpenDocument Database")
(addMimeType "OpenDocument Formula" "application/vnd.oasis.opendocument.formula" '(odf) "IANA: OpenDocument Formula")
(addMimeType "OpenDocument Formula Template" "application/vnd.oasis.opendocument.formula-template" '(odft) "IANA: OpenDocument Formula Template")
(addMimeType "OpenDocument Graphics" "application/vnd.oasis.opendocument.graphics" '(odg) "IANA: OpenDocument Graphics")
(addMimeType "OpenDocument Graphics Template" "application/vnd.oasis.opendocument.graphics-template" '(otg) "IANA: OpenDocument Graphics Template")
(addMimeType "OpenDocument Image" "application/vnd.oasis.opendocument.image" '(odi) "IANA: OpenDocument Image")
(addMimeType "OpenDocument Image Template" "application/vnd.oasis.opendocument.image-template" '(oti) "IANA: OpenDocument Image Template")
(addMimeType "OpenDocument Presentation" "application/vnd.oasis.opendocument.presentation" '(odp) "IANA: OpenDocument Presentation")
(addMimeType "OpenDocument Presentation Template" "application/vnd.oasis.opendocument.presentation-template" '(otp) "IANA: OpenDocument Presentation Template")
(addMimeType "OpenDocument Spreadsheet" "application/vnd.oasis.opendocument.spreadsheet" '(ods) "IANA: OpenDocument Spreadsheet")
(addMimeType "OpenDocument Spreadsheet Template" "application/vnd.oasis.opendocument.spreadsheet-template" '(ots) "IANA: OpenDocument Spreadsheet Template")
(addMimeType "OpenDocument Text" "application/vnd.oasis.opendocument.text" '(odt) "IANA: OpenDocument Text")
(addMimeType "OpenDocument Text Master" "application/vnd.oasis.opendocument.text-master" '(odm) "IANA: OpenDocument Text Master")
(addMimeType "OpenDocument Text Template" "application/vnd.oasis.opendocument.text-template" '(ott) "IANA: OpenDocument Text Template")
(addMimeType "OpenGL Textures (KTX)" "image/ktx" '(ktx) "KTX File Format")
(addMimeType "OpenOffice - Calc (Spreadsheet)" "application/vnd.sun.xml.calc" '(sxc) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Calc Template (Spreadsheet)" "application/vnd.sun.xml.calc.template" '(stc) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Draw (Graphics)" "application/vnd.sun.xml.draw" '(sxd) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Draw Template (Graphics)" "application/vnd.sun.xml.draw.template" '(std) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Impress (Presentation)" "application/vnd.sun.xml.impress" '(sxi) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Impress Template (Presentation)" "application/vnd.sun.xml.impress.template" '(sti) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Math (Formula)" "application/vnd.sun.xml.math" '(sxm) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Writer (Text - HTML)" "application/vnd.sun.xml.writer" '(sxw) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Writer (Text - HTML)" "application/vnd.sun.xml.writer.global" '(sxg) "Wikipedia: OpenOffice")
(addMimeType "OpenOffice - Writer Template (Text - HTML)" "application/vnd.sun.xml.writer.template" '(stw) "Wikipedia: OpenOffice")
(addMimeType "OpenType Font File" "application/x-font-otf" '(otf) "OpenType Font File")
(addMimeType "Opus Audio" "audio/opus" '(opus) "Wikipedia: Opus Audio")
(addMimeType "OSFPVG" "application/vnd.yamaha.openscoreformat.osfpvg+xml" '(osfpvg) "IANA: OSFPVG")
(addMimeType "OSGi Deployment Package" "application/vnd.osgi.dp" '(dp) "IANA: OSGi Deployment Package")
(addMimeType "PalmOS Data" "application/vnd.palm" '(pdb) "IANA: PalmOS Data")
(addMimeType "Pascal Source File" "text/x-pascal" '(p) "Wikipedia: Pascal")
(addMimeType "PawaaFILE" "application/vnd.pawaafile" '(paw) "IANA: PawaaFILE")
(addMimeType "PCL 6 Enhanced (Formely PCL XL)" "application/vnd.hp-pclxl" '(pclxl) "IANA: HP PCL XL")
(addMimeType "Pcsel eFIF File" "application/vnd.picsel" '(efif) "IANA: Picsel eFIF File")
(addMimeType "PCX Image" "image/x-pcx" '(pcx) "Wikipedia: PCX")
(addMimeType "Photoshop Document" "image/vnd.adobe.photoshop" '(psd) "Wikipedia: Photoshop Document")
(addMimeType "PICSRules" "application/pics-rules" '(prf) "W3C PICSRules")
(addMimeType "PICT Image" "image/x-pict" '(pic) "Wikipedia: PICT")
(addMimeType "pIRCh" "application/x-chat" '(chat) "Wikipedia: pIRCh")
(addMimeType "PKCS #10 - Certification Request Standard" "application/pkcs10" '(p10) "RFC 2986")
(addMimeType "PKCS #12 - Personal Information Exchange Syntax Standard" "application/x-pkcs12" '(p12) "RFC 2986")
(addMimeType "PKCS #7 - Cryptographic Message Syntax Standard" "application/pkcs7-mime" '(p7m) "RFC 2315")
(addMimeType "PKCS #7 - Cryptographic Message Syntax Standard" "application/pkcs7-signature" '(p7s) "RFC 2315")
(addMimeType "PKCS #7 - Cryptographic Message Syntax Standard (Certificate Request Response)" "application/x-pkcs7-certreqresp" '(p7r) "RFC 2986")
(addMimeType "PKCS #7 - Cryptographic Message Syntax Standard (Certificates)" "application/x-pkcs7-certificates" '(p7b) "RFC 2986")
(addMimeType "PKCS #8 - Private-Key Information Syntax Standard" "application/pkcs8" '(p8) "RFC 5208")
(addMimeType "PocketLearn Viewers" "application/vnd.pocketlearn" '(plf) "IANA: PocketLearn Viewers")
(addMimeType "Portable Anymap Image" "image/x-portable-anymap" '(pnm) "Wikipedia: Netpbm Format")
(addMimeType "Portable Bitmap Format" "image/x-portable-bitmap" '(pbm) "Wikipedia: Netpbm Format")
(addMimeType "Portable Compiled Format" "application/x-font-pcf" '(pcf) "Wikipedia: Portable Compiled Format")
(addMimeType "Portable Font Resource" "application/font-tdpfr" '(pfr) "RFC 3073")
(addMimeType "Portable Game Notation (Chess Games)" "application/x-chess-pgn" '(pgn) "Wikipedia: Portable Game Notationb")
(addMimeType "Portable Graymap Format" "image/x-portable-graymap" '(pgm) "Wikipedia: Netpbm Format")
(addMimeType "Portable Network Graphics (PNG)" "image/png" '(png) "RFC 2083")
(addMimeType "Portable Network Graphics (PNG) (Citrix client)" "image/x-citrix-png" '(png) "RFC 2083")
(addMimeType "Portable Network Graphics (PNG) (x-token)" "image/x-png" '(png) "RFC 2083")
(addMimeType "Portable Pixmap Format" "image/x-portable-pixmap" '(ppm) "Wikipedia: Netpbm Format")
(addMimeType "Portable Symmetric Key Container" "application/pskc+xml" '(pskcxml) "RFC 6030")
(addMimeType "PosML" "application/vnd.ctc-posml" '(pml) "IANA: PosML")
(addMimeType "PostScript" "application/postscript" '(ai) "Wikipedia: PostScript")
(addMimeType "PostScript Fonts" "application/x-font-type1" '(pfa) "Wikipedia: PostScript Fonts")
(addMimeType "PowerBuilder" "application/vnd.powerbuilder6" '(pbd) "IANA: PowerBuilder")
(addMimeType "Pretty Good Privacy" "application/pgp-encrypted" '(pgp) "RFC 2015")
(addMimeType "Pretty Good Privacy - Signature" "application/pgp-signature" '(pgp) "RFC 2015")
(addMimeType "Preview Systems ZipLock/VBox" "application/vnd.previewsystems.box" '(box) "IANA: Preview Systems ZipLock/Vbox")
(addMimeType "Princeton Video Image" "application/vnd.pvi.ptid1" '(ptid) "IANA: Princeton Video Image")
(addMimeType "Pronunciation Lexicon Specification" "application/pls+xml" '(pls) "RFC 4267")
(addMimeType "Proprietary P&G Standard Reporting System" "application/vnd.pg.format" '(str) "IANA: Proprietary P&G Standard Reporting System")
(addMimeType "Proprietary P&G Standard Reporting System" "application/vnd.pg.osasli" '(ei6) "IANA: Proprietary P&G Standard Reporting System")
(addMimeType "PRS Lines Tag" "text/prs.lines.tag" '(dsc) "IANA: PRS Lines Tag")
(addMimeType "PSF Fonts" "application/x-font-linux-psf" '(psf) "PSF Fonts")
(addMimeType "PubliShare Objects" "application/vnd.publishare-delta-tree" '(qps) "IANA: PubliShare Objects")
(addMimeType "Qualcomm's Plaza Mobile Internet" "application/vnd.pmi.widget" '(wg) "IANA: Qualcomm's Plaza Mobile Internet")
(addMimeType "QuarkXpress" "application/vnd.quark.quarkxpress" '(qxd) "IANA: QuarkXPress")
(addMimeType "QUASS Stream Player" "application/vnd.epson.esf" '(esf) "IANA: QUASS Stream Player")
(addMimeType "QUASS Stream Player" "application/vnd.epson.msf" '(msf) "IANA: QUASS Stream Player")
(addMimeType "QUASS Stream Player" "application/vnd.epson.ssf" '(ssf) "IANA: QUASS Stream Player")
(addMimeType "QuickAnime Player" "application/vnd.epson.quickanime" '(qam) "IANA: QuickAnime Player")
(addMimeType "Quicken" "application/vnd.intu.qfx" '(qfx) "IANA: Quicken")
(addMimeType "Quicktime Video" "video/quicktime" '(qt) "Wikipedia: Quicktime")
(addMimeType "RAR Archive" "application/x-rar-compressed" '(rar) "Wikipedia: RAR")
(addMimeType "Real Audio Sound" "audio/x-pn-realaudio" '(ram) "Wikipedia: RealPlayer")
(addMimeType "Real Audio Sound" "audio/x-pn-realaudio-plugin" '(rmp) "Wikipedia: RealPlayer")
(addMimeType "Really Simple Discovery" "application/rsd+xml" '(rsd) "Wikipedia: Really Simple Discovery")
(addMimeType "RealMedia" "application/vnd.rn-realmedia" '(rm) "")
(addMimeType "RealVNC" "application/vnd.realvnc.bed" '(bed) "IANA: RealVNC")
(addMimeType "Recordare Applications" "application/vnd.recordare.musicxml" '(mxl) "IANA: Recordare Apps")
(addMimeType "Recordare Applications" "application/vnd.recordare.musicxml+xml" '(musicxml) "IANA: Recordare Apps")
(addMimeType "Relax NG Compact Syntax" "application/relax-ng-compact-syntax" '(rnc) "Relax NG")
(addMimeType "RemoteDocs R-Viewer" "application/vnd.data-vision.rdz" '(rdz) "IANA: Data-Vision")
(addMimeType "Resource Description Framework" "application/rdf+xml" '(rdf) "RFC 3870")
(addMimeType "RetroPlatform Player" "application/vnd.cloanto.rp9" '(rp9) "IANA: RetroPlatform Player")
(addMimeType "RhymBox" "application/vnd.jisp" '(jisp) "IANA: RhymBox")
(addMimeType "Rich Text Format" "application/rtf" '(rtf) "Wikipedia: Rich Text Format")
(addMimeType "Rich Text Format (RTF)" "text/richtext" '(rtx) "Wikipedia: Rich Text Format")
(addMimeType "ROUTE 66 Location Based Services" "application/vnd.route66.link66+xml" '(link66) "IANA: ROUTE 66")
(addMimeType "RSS - Really Simple Syndication" "application/rss+xml" '(rss xml) "Wikipedia: RSS")
(addMimeType "S Hexdump Format" "application/shf+xml" '(shf) "RFC 4194")
(addMimeType "SailingTracker" "application/vnd.sailingtracker.track" '(st) "IANA: SailingTracker")
(addMimeType "Scalable Vector Graphics (SVG)" "image/svg+xml" '(svg) "Wikipedia: SVG")
(addMimeType "ScheduleUs" "application/vnd.sus-calendar" '(sus) "IANA: ScheduleUs")
(addMimeType "Search/Retrieve via URL Response Format" "application/sru+xml" '(sru) "RFC 6207")
(addMimeType "Secure Electronic Transaction - Payment" "application/set-payment-initiation" '(setpay) "IANA: SET Payment")
(addMimeType "Secure Electronic Transaction - Registration" "application/set-registration-initiation" '(setreg) "IANA: SET Registration")
(addMimeType "Secured eMail" "application/vnd.sema" '(sema) "IANA: Secured eMail")
(addMimeType "Secured eMail" "application/vnd.semd" '(semd) "IANA: Secured eMail")
(addMimeType "Secured eMail" "application/vnd.semf" '(semf) "IANA: Secured eMail")
(addMimeType "SeeMail" "application/vnd.seemail" '(see) "IANA: SeeMail")
(addMimeType "Server Normal Format" "application/x-font-snf" '(snf) "Wikipedia: Server Normal Format")
(addMimeType "Server-Based Certificate Validation Protocol - Validation Policies - Request" "application/scvp-vp-request" '(spq) "RFC 5055")
(addMimeType "Server-Based Certificate Validation Protocol - Validation Policies - Response" "application/scvp-vp-response" '(spp) "RFC 5055")
(addMimeType "Server-Based Certificate Validation Protocol - Validation Request" "application/scvp-cv-request" '(scq) "RFC 5055")
(addMimeType "Server-Based Certificate Validation Protocol - Validation Response" "application/scvp-cv-response" '(scs) "RFC 5055")
(addMimeType "Session Description Protocol" "application/sdp" '(sdp) "RFC 2327")
(addMimeType "Setext" "text/x-setext" '(etx) "Wikipedia: Setext")
(addMimeType "SGI Movie" "video/x-sgi-movie" '(movie) "SGI Facts")
(addMimeType "Shana Informed Filler" "application/vnd.shana.informed.formdata" '(ifm) "IANA: Shana Informed Filler")
(addMimeType "Shana Informed Filler" "application/vnd.shana.informed.formtemplate" '(itp) "IANA: Shana Informed Filler")
(addMimeType "Shana Informed Filler" "application/vnd.shana.informed.interchange" '(iif) "IANA: Shana Informed Filler")
(addMimeType "Shana Informed Filler" "application/vnd.shana.informed.package" '(ipk) "IANA: Shana Informed Filler")
(addMimeType "Sharing Transaction Fraud Data" "application/thraud+xml" '(tfi) "RFC 5941")
(addMimeType "Shell Archive" "application/x-shar" '(shar) "Wikipedia: Shell Archie")
(addMimeType "Silicon Graphics RGB Bitmap" "image/x-rgb" '(rgb) "RGB Image Format")
(addMimeType "SimpleAnimeLite Player" "application/vnd.epson.salt" '(slt) "IANA: SimpleAnimeLite Player")
(addMimeType "Simply Accounting" "application/vnd.accpac.simply.aso" '(aso) "IANA: Simply Accounting")
(addMimeType "Simply Accounting - Data Import" "application/vnd.accpac.simply.imp" '(imp) "IANA: Simply Accounting")
(addMimeType "SimTech MindMapper" "application/vnd.simtech-mindmapper" '(twd) "IANA: SimTech MindMapper")
(addMimeType "Sixth Floor Media - CommonSpace" "application/vnd.commonspace" '(csp) "IANA: CommonSpace")
(addMimeType "SMAF Audio" "application/vnd.yamaha.smaf-audio" '(saf) "IANA: SMAF Audio")
(addMimeType "SMAF File" "application/vnd.smaf" '(mmf) "IANA: SMAF File")
(addMimeType "SMAF Phrase" "application/vnd.yamaha.smaf-phrase" '(spf) "IANA: SMAF Phrase")
(addMimeType "SMART Technologies Apps" "application/vnd.smart.teacher" '(teacher) "IANA: SMART Technologies Apps")
(addMimeType "SourceView Document" "application/vnd.svd" '(svd) "IANA: SourceView Document")
(addMimeType "SPARQL - Query" "application/sparql-query" '(rq) "W3C SPARQL")
(addMimeType "SPARQL - Results" "application/sparql-results+xml" '(srx) "W3C SPARQL")
(addMimeType "Speech Recognition Grammar Specification" "application/srgs" '(gram) "W3C Speech Grammar")
(addMimeType "Speech Recognition Grammar Specification - XML" "application/srgs+xml" '(grxml) "W3C Speech Grammar")
(addMimeType "Speech Synthesis Markup Language" "application/ssml+xml" '(ssml) "W3C Speech Synthesis")
(addMimeType "SSEYO Koan Play File" "application/vnd.koan" '(skp) "IANA: SSEYO Koan Play File")
(addMimeType "Standard Generalized Markup Language (SGML)" "text/sgml" '(sgml) "Wikipedia: SGML")
(addMimeType "StarOffice - Calc" "application/vnd.stardivision.calc" '(sdc) "")
(addMimeType "StarOffice - Draw" "application/vnd.stardivision.draw" '(sda) "")
(addMimeType "StarOffice - Impress" "application/vnd.stardivision.impress" '(sdd) "")
(addMimeType "StarOffice - Math" "application/vnd.stardivision.math" '(smf) "")
(addMimeType "StarOffice - Writer" "application/vnd.stardivision.writer" '(sdw) "")
(addMimeType "StarOffice - Writer (Global)" "application/vnd.stardivision.writer-global" '(sgl) "")
(addMimeType "StepMania" "application/vnd.stepmania.stepchart" '(sm) "IANA: StepMania")
(addMimeType "Stuffit Archive" "application/x-stuffit" '(sit) "Wikipedia: Stuffit")
(addMimeType "Stuffit Archive" "application/x-stuffitx" '(sitx) "Wikipedia: Stuffit")
(addMimeType "SudokuMagic" "application/vnd.solent.sdkm+xml" '(sdkm) "IANA: SudokuMagic")
(addMimeType "Sugar Linux Application Bundle" "application/vnd.olpc-sugar" '(xo) "IANA: Sugar Linux App Bundle")
(addMimeType "Sun Audio - Au file format" "audio/basic" '(au) "Wikipedia: Sun audio")
(addMimeType "SundaHus WQ" "application/vnd.wqd" '(wqd) "IANA: SundaHus WQ")
(addMimeType "Symbian Install Package" "application/vnd.symbian.install" '(sis) "IANA: Symbian Install")
(addMimeType "Synchronized Multimedia Integration Language" "application/smil+xml" '(smi) "RFC 4536")
(addMimeType "SyncML" "application/vnd.syncml+xml" '(xsm) "IANA: SyncML")
(addMimeType "SyncML - Device Management" "application/vnd.syncml.dm+wbxml" '(bdm) "IANA: SyncML")
(addMimeType "SyncML - Device Management" "application/vnd.syncml.dm+xml" '(xdm) "IANA: SyncML")
(addMimeType "System V Release 4 CPIO Archive" "application/x-sv4cpio" '(sv4cpio) "Wikipedia: pax")
(addMimeType "System V Release 4 CPIO Checksum Data" "application/x-sv4crc" '(sv4crc) "Wikipedia: pax")
(addMimeType "Systems Biology Markup Language" "application/sbml+xml" '(sbml) "RFC 3823")
(addMimeType "Tab Seperated Values" "text/tab-separated-values" '(tsv) "Wikipedia: TSV")
(addMimeType "Tagged Image File Format" "image/tiff" '(tiff) "Wikipedia: TIFF")
(addMimeType "Tao Intent" "application/vnd.tao.intent-module-archive" '(tao) "IANA: Tao Intent")
(addMimeType "Tar File (Tape Archive)" "application/x-tar" '(tar) "Wikipedia: Tar")
(addMimeType "Tcl Script" "application/x-tcl" '(tcl) "Wikipedia: Tcl")
(addMimeType "TeX" "application/x-tex" '(tex) "Wikipedia: TeX")
(addMimeType "TeX Font Metric" "application/x-tex-tfm" '(tfm) "Wikipedia: TeX Font Metric")
(addMimeType "Text Encoding and Interchange" "application/tei+xml" '(tei) "RFC 6129")
(addMimeType "Text File" "text/plain" '(txt) "Wikipedia: Text File")
(addMimeType "TIBCO Spotfire" "application/vnd.spotfire.dxp" '(dxp) "IANA: TIBCO Spotfire")
(addMimeType "TIBCO Spotfire" "application/vnd.spotfire.sfs" '(sfs) "IANA: TIBCO Spotfire")
(addMimeType "Time Stamped Data Envelope" "application/timestamped-data" '(tsd) "RFC 5955")
(addMimeType "TRI Systems Config" "application/vnd.trid.tpt" '(tpt) "IANA: TRI Systems")
(addMimeType "Triscape Map Explorer" "application/vnd.triscape.mxs" '(mxs) "IANA: Triscape Map Explorer")
(addMimeType "troff" "text/troff" '(t) "Wikipedia: troff")
(addMimeType "True BASIC" "application/vnd.trueapp" '(tra) "IANA: True BASIC")
(addMimeType "TrueType Font" "application/x-font-ttf" '(ttf) "Wikipedia: TrueType")
(addMimeType "Turtle (Terse RDF Triple Language)" "text/turtle" '(ttl) "Wikipedia: Turtle")
(addMimeType "UMAJIN" "application/vnd.umajin" '(umj) "IANA: UMAJIN")
(addMimeType "Unique Object Markup Language" "application/vnd.uoml+xml" '(uoml) "IANA: UOML")
(addMimeType "Unity 3d" "application/vnd.unity" '(unityweb) "IANA: Unity 3d")
(addMimeType "Universal Forms Description Language" "application/vnd.ufdl" '(ufd) "IANA: Universal Forms Description Language")
(addMimeType "URI Resolution Services" "text/uri-list" '(uri) "RFC 2483")
(addMimeType "User Interface Quartz - Theme (Symbian)" "application/vnd.uiq.theme" '(utz) "IANA: User Interface Quartz")
(addMimeType "Ustar (Uniform Standard Tape Archive)" "application/x-ustar" '(ustar) "Wikipedia: Ustar")
(addMimeType "UUEncode" "text/x-uuencode" '(uu) "Wikipedia: UUEncode")
(addMimeType "vCalendar" "text/x-vcalendar" '(vcs) "Wikipedia: vCalendar")
(addMimeType "vCard" "text/x-vcard" '(vcf) "Wikipedia: vCard")
(addMimeType "Video CD" "application/x-cdlink" '(vcd) "Wikipedia: Video CD")
(addMimeType "Viewport+" "application/vnd.vsf" '(vsf) "IANA: Viewport+")
(addMimeType "Virtual Reality Modeling Language" "model/vrml" '(wrl) "Wikipedia: VRML")
(addMimeType "VirtualCatalog" "application/vnd.vcx" '(vcx) "IANA: VirtualCatalog")
(addMimeType "Virtue MTS" "model/vnd.mts" '(mts) "IANA: MTS")
(addMimeType "Virtue VTU" "model/vnd.vtu" '(vtu) "IANA: VTU")
(addMimeType "Visionary" "application/vnd.visionary" '(vis) "IANA: Visionary")
(addMimeType "Vivo" "video/vnd.vivo" '(viv) "IANA: Vivo")
(addMimeType "Voice Browser Call Control" "application/ccxml+xml," '(ccxml) "Voice Browser Call Control: CCXML Version 1.0")
(addMimeType "VoiceXML" "application/voicexml+xml" '(vxml) "RFC 4267")
(addMimeType "WAIS Source" "application/x-wais-source" '(src) "YoLinux")
(addMimeType "WAP Binary XML (WBXML)" "application/vnd.wap.wbxml" '(wbxml) "IANA: WBXML")
(addMimeType "WAP Bitamp (WBMP)" "image/vnd.wap.wbmp" '(wbmp) "IANA: WBMP")
(addMimeType "Waveform Audio File Format (WAV)" "audio/x-wav" '(wav) "Wikipedia: WAV")
(addMimeType "Web Distributed Authoring and Versioning" "application/davmount+xml" '(davmount) "RFC 4918")
(addMimeType "Web Open Font Format" "application/x-font-woff" '(woff) "Wikipedia: Web Open Font Format")
(addMimeType "Web Services Policy" "application/wspolicy+xml" '(wspolicy) "W3C Web Services Policy")
(addMimeType "WebP Image" "image/webp" '(webp) "Wikipedia: WebP")
(addMimeType "WebTurbo" "application/vnd.webturbo" '(wtb) "IANA: WebTurbo")
(addMimeType "Widget Packaging and XML Configuration" "application/widget" '(wgt) "W3C Widget Packaging and XML Configuration")
(addMimeType "WinHelp" "application/winhlp" '(hlp) "Wikipedia: WinHelp")
(addMimeType "Wireless Markup Language (WML)" "text/vnd.wap.wml" '(wml) "Wikipedia: WML")
(addMimeType "Wireless Markup Language Script (WMLScript)" "text/vnd.wap.wmlscript" '(wmls) "Wikipedia: WMLScript")
(addMimeType "WMLScript" "application/vnd.wap.wmlscriptc" '(wmlsc) "IANA: WMLScript")
(addMimeType "Wordperfect" "application/vnd.wordperfect" '(wpd) "IANA: Wordperfect")
(addMimeType "Worldtalk" "application/vnd.wt.stf" '(stf) "IANA: Worldtalk")
(addMimeType "WSDL - Web Services Description Language" "application/wsdl+xml" '(wsdl) "W3C Web Service Description Language")
(addMimeType "X BitMap" "image/x-xbitmap" '(xbm) "Wikipedia: X BitMap")
(addMimeType "X PixMap" "image/x-xpixmap" '(xpm) "Wikipedia: X PixMap")
(addMimeType "X Window Dump" "image/x-xwindowdump" '(xwd) "Wikipedia: X Window Dump")
(addMimeType "X.509 Certificate" "application/x-x509-ca-cert" '(der) "Wikipedia: X.509")
(addMimeType "Xfig" "application/x-xfig" '(fig) "Wikipedia: Xfig")
(addMimeType "XHTML - The Extensible HyperText Markup Language" "application/xhtml+xml" '(xhtml) "W3C XHTML")
(addMimeType "XML - Extensible Markup Language" "application/xml" '(xml) "W3C XML")
(addMimeType "XML Configuration Access Protocol - XCAP Diff" "application/xcap-diff+xml" '(xdf) "Wikipedia: XCAP")
(addMimeType "XML Encryption Syntax and Processing" "application/xenc+xml" '(xenc) "W3C XML Encryption Syntax and Processing")
(addMimeType "XML Patch Framework" "application/patch-ops-error+xml" '(xer) "RFC 5261")
(addMimeType "XML Resource Lists" "application/resource-lists+xml" '(rl) "RFC 4826")
(addMimeType "XML Resource Lists" "application/rls-services+xml" '(rs) "RFC 4826")
(addMimeType "XML Resource Lists Diff" "application/resource-lists-diff+xml" '(rld) "RFC 4826")
(addMimeType "XML Transformations" "application/xslt+xml" '(xslt) "W3C XSLT")
(addMimeType "XML-Binary Optimized Packaging" "application/xop+xml" '(xop) "W3C XOP")
(addMimeType "XPInstall - Mozilla" "application/x-xpinstall" '(xpi) "Wikipedia: XPI")
(addMimeType "XSPF - XML Shareable Playlist Format" "application/xspf+xml" '(xspf) "XML Shareable Playlist Format")
(addMimeType "XUL - XML User Interface Language" "application/vnd.mozilla.xul+xml" '(xul) "IANA: XUL")
(addMimeType "XYZ File Format" "chemical/x-xyz" '(xyz) "Wikipedia: XYZ File Format")
(addMimeType "YAML Ain't Markup Language / Yet Another Markup Language" "text/yaml" '(yaml) "YAML: YAML Ain't Markup Language")
(addMimeType "YANG Data Modeling Language" "application/yang" '(yang) "Wikipedia: YANG")
(addMimeType "YIN (YANG - XML)" "application/yin+xml" '(yin) "Wikipedia: YANG")
(addMimeType "Z.U.L. Geometry" "application/vnd.zul" '(zir) "IANA: Z.U.L.")
(addMimeType "Zip Archive" "application/zip" '(zip) "Wikipedia: Zip")
(addMimeType "ZVUE Media Manager" "application/vnd.handheld-entertainment+xml" '(zmm) "IANA: ZVUE Media Manager")
(addMimeType "Zzazz Deck" "application/vnd.zzazz.deck+xml" '(zaz) "IANA: Zzazz")
+36 -2
View File
@@ -281,6 +281,9 @@
(syntax-case stx ()
((_ (a c b1 b2))
(cond
((eq? (syntax->datum #'a) 'define) #'(js-def c (b1 b2)))
((eq? (syntax->datum #'a) 'lambda) #'(js-lambda c b1 b2))
((eq? (syntax->datum #'a) 'λ) #'(js-lambda c b1 b2))
((eq? (syntax->datum #'a) 'if) #'(js2-if c b1 b2))
((memq (syntax->datum #'a) js-ops) #'(js-op a c b1 b2))
((eq? (syntax->datum #'a) 'let*) #'(js2-let* c b1 b2))
@@ -321,6 +324,7 @@
((eq? (syntax->datum #'a) 'return) #'(js-return b))
((eq? (syntax->datum #'a) 'quote) #'(js-quote b))
((eq? (syntax->datum #'a) 'eval) #'(js-eval b))
((eq? (syntax->datum #'a) 'list) #'(js-op a b))
;string-append
; "\"" (esc-double-quote (format "~a" 'b)) "\""))
(else
@@ -334,6 +338,8 @@
(cond
((eq? (syntax->datum #'a) 'let*) #'(js2-let* c b1 ...))
((eq? (syntax->datum #'a) 'define) #'(js-def c (b1 ...)))
((eq? (syntax->datum #'a) 'lambda) #'(js-lambda c b1 ...))
((eq? (syntax->datum #'a) 'λ) #'(js-lambda c b1 ...))
((memq (syntax->datum #'a) js-ops) #'(js-op a c b1 ...))
((eq? (syntax->datum #'a) 'begin) #'(js-begin c b1 ...))
((eq? (syntax->datum #'a) 'let) #'(error "let is not supported in js context, use let*"))
@@ -392,10 +398,11 @@
#|
(define t1
(js (set! window.myfunc (λ (x)
(let* ((el (document.getElementById 'hi))
(let* ((el (send document getElementById 'hi))
(y (* x x)))
(el.setAttribute "x" (+ y ""))
(send el setAttribute "x" (+ y ""))
)
(send console log "dit set attribute x on element hi")
)
)))
@@ -408,6 +415,33 @@
)
)
)
(define t3 (js (define (f x y z)
(send console log (cons x (cons y (list z))))
(let* ((l (cons x (cons y (list z)))))
(return (send l map (λ (a) (return (+ a 10)))))
)
)
)
)
==>
function f(x, y, z) {
console.log([ x].concat([ y].concat([ z])));
{
let l = [ x].concat([ y].concat([ z]));
return (l.map(function (a) { return (a + 10);
;
}
));
;
}
;
}
;
|#
+2 -2
View File
@@ -25,8 +25,8 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define rkt-qt-version-major 0)
(define rkt-qt-version-minor 2)
(define rkt-qt-version-patch 1)
(define rkt-qt-version-minor (if (eq? (system-type 'os) 'windows) 3 2))
(define rkt-qt-version-patch (if (eq? (system-type 'os) 'windows) 1 1))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Internal functions
+275 -128
View File
@@ -3,7 +3,7 @@
(require "racket-webview-qt.rkt"
"racket-webview-version.rkt"
"private/utils.rkt"
"mimetypes.rkt"
racket-mimetypes
"rgba.rkt"
"menu.rkt"
finalizer
@@ -30,6 +30,7 @@
lru-cache
racket-self-signed-cert
simple-log
js-maker
)
(provide webview-new-context
@@ -143,6 +144,10 @@
;test
)
(define (to-symbol s)
(string->symbol (format "~a" s)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Web server
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -396,6 +401,14 @@
#f))
(define-syntax with-id->el
(syntax-rules ()
((_ id el e1 ...)
(js (let ((el (send document getElementById (eval id))))
e1 ...)))
)
)
(define-syntax with-id
(syntax-rules ()
((_ id el
@@ -420,9 +433,13 @@
(define-syntax with-selector
(syntax-rules ()
((_ selector func)
(format "return window.rkt_with_selector('~a', ~a)"
(esc-quote selector)
func))))
(js
(return (send window rkt_with_selector (eval selector) func))))
)
)
; (format "return window.rkt_with_selector('~a', ~a)"
; (esc-quote selector)
; func))))
(define (make-exts-filter list-of-pe)
(define (mef pe)
@@ -572,22 +589,26 @@
(define/contract (webview-set-menu! wv menu)
(-> wv-win? is-wv-menu? symbol?)
(let* ((json (wv-menu->json menu))
(js (string-append "window._web_wire_menu('"
json
"');"))
(js-code (js (send window _web_wire_menu (eval json))))
;(string-append "window._web_wire_menu('"
; json
; "');"))
)
(webview-run-js wv js)
(webview-run-js wv js-code)
)
)
(define/contract (webview-popup-menu! wv menu x y)
(-> wv-win? is-wv-menu? number? number? symbol?)
(let* ((json (wv-menu->json menu))
(js (string-append "window._web_wire_popup_menu(JSON.parse('"
json "'), " (format "~a, ~a" x y)
");"))
(js-code (js (send window _web_wire_popup_menu
(send JSON parse (eval json))
(eval x) (eval y))))
;(string-append "window._web_wire_popup_menu(JSON.parse('"
; json "'), " (format "~a, ~a" x y)
; ");"))
)
(webview-run-js wv js)))
(webview-run-js wv js-code)))
(define (loglevel? x)
(and (symbol? x)
@@ -617,8 +638,10 @@
(define/contract (webview-navigate! wv place)
(-> wv-win? string? symbol?)
(webview-run-js wv
(format "window.location = '~a';"
(esc-quote place))))
(js (set! (js-dot window location) (eval place)))
;(format "window.location = '~a';"
; (esc-quote place))))
))
(define/contract (webview-base-url wv)
(-> wv-win? url?)
@@ -718,10 +741,11 @@
(wv-win-window-nr wv) sel evt (if no-prevent-default 'true 'false)))
(r (webview-call-js wv j))
)
;(dbg-webview "called js: ~a" j)
(map (λ (el)
(list (string->symbol (car el)) (cadr el) (caddr el)))
r))))
(if (eq? r #f)
#f
(map (λ (el)
(list (string->symbol (car el)) (cadr el) (caddr el)))
r)))))
(define/contract (webview-unbind! wv selector event)
(-> wv-win? (or/c symbol? string?) (or/c symbol? list-of-symbol?) list?)
@@ -735,9 +759,11 @@
(let ((r (webview-call-js wv
(format "return window.rkt_unbind_evt_ids(~a, '~a', ~a)"
(wv-win-window-nr wv) sel evt))))
(map (λ (el)
(list (string->symbol (car el)) (cadr el) (caddr el)))
r))))
(if (eq? r #f)
#f
(map (λ (el)
(list (string->symbol (car el)) (cadr el) (caddr el)))
r)))))
(define/contract (webview-run-js wv js)
(-> wv-win? string? symbol?)
@@ -762,15 +788,14 @@
(define/contract (webview-call-js wv js)
(-> wv-win? string? (or/c string? list? boolean? hash? symbol? number?))
;(displayln js)
(let ((result (rkt-webview-call-js (wv-win-handle wv) js)))
;(displayln result)
(if (webview-call-js-result? result)
(if (eq? (car result) 'oke)
(hash-ref (fromJson (cadr result)) 'result #f)
(error
(format "Error calling javascript. Message: ~a"
(hash-ref (fromJson (cadr result)) 'exn result)))
)
(begin
(err-webview "Error calling javascript: ~a" result)
#f))
(error
(format "Wrong result from webview-call-js: ~a" result))
)
@@ -785,9 +810,12 @@
(-> wv-win? symbol? (or/c string? xexpr?) symbol?)
(if (string? html)
(let ((r (webview-call-js wv
(with-id id el
("el.innerHTML = '~a'; return true;"
(esc-quote html))))))
(with-id->el id el
(set! (js-dot el innerHTML) (eval html))
(return #t)))))
;(with-id id el
; ("el.innerHTML = '~a'; return true;"
; (esc-quote html))))))
(if r 'oke 'failed))
(webview-set-innerHTML! wv id (xexpr->string html))
)
@@ -796,7 +824,27 @@
(define/contract (webview-set-value! wv id val)
(-> wv-win? symbol? (or/c symbol? string? number? boolean? g:date? g:time? g:datetime? rgba?) symbol?)
(webview-run-js wv
(with-id id el
(with-id->el id el
(if (or
(== (js-dot el type) "checkbox")
(== (js-dot el type) "radio"))
(set! (js-dot el checked)
(eval
(if (eq? val #f) #f #t)))
(set! (js-dot el value)
(eval
(cond
((g:date? val) (date->string val))
((g:time? val) (time->string val))
((g:datetime? val) (datetime->string val))
((rgba? val) (rgba->hex val))
(else val)))))
)
)
)
#|
(with-id id el
((string-append
"if (el.type == 'checkbox' || el.type == 'radio') {\n"
" el.checked = ~a;\n"
@@ -819,19 +867,25 @@
)
)
)
|#
(define/contract (webview-value wv id)
(-> wv-win? symbol? (or/c string? boolean?))
(let ((v (webview-call-js wv
(with-id id el
((string-append "let f = function() {\n"
" if (el.type == 'checkbox' || el.type == 'radio') {\n"
" return '' + el.checked;\n"
" } else {\n"
" return el.value;\n"
" }\n"
"};\n"))
-> "f()"))))
(with-id->el id el
(if (or (== (js-dot el type) "checkbox")
(== (js-dot el type) "radio"))
(return (js-dot el checked))
(return (js-dot el value)))))))
;(with-id id el
; ((string-append "let f = function() {\n"
; " if (el.type == 'checkbox' || el.type == 'radio') {\n"
; " return '' + el.checked;\n"
; " } else {\n"
; " return el.value;\n"
; " }\n"
; "};\n"))
; -> "f()"))))
(if (eq? v #f)
#f
v)))
@@ -859,132 +913,210 @@
(define/contract (webview-add-class! wv id-or-selector class)
(-> wv-win? (or/c symbol? string?) (or/c symbol? string? list?) hash?)
(-> wv-win? (or/c symbol? string?) (or/c symbol? string? list?) (or/c hash? boolean?))
(let ((sel (if (symbol? id-or-selector)
(format "#~a" id-or-selector)
id-or-selector))
(cl (mk-js-array class))
;(cl (mk-js-array class))
(cl (if (list? class) class (list class)))
)
(webview-call-js wv (with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" cl.forEach(function(c) {"
" el.classList.add(c);"
" });"
" return id;"
"}") cl)))
(λ (id el)
(let ((cl (eval cl)))
(send cl forEach
(λ (c)
(send (js-dot el classList) add c)
)
)
(return id))))
)
)
)
; (format
; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " cl.forEach(function(c) {"
; " el.classList.add(c);"
; " });"
; " return id;"
; "}") cl)))
; )
; )
(define/contract (webview-remove-class! wv id-or-selector class)
(-> wv-win? (or/c symbol? string?) (or/c symbol? string? list?) hash?)
(-> wv-win? (or/c symbol? string?) (or/c symbol? string? list?) (or/c hash? boolean?))
(let ((sel (if (symbol? id-or-selector)
(format "#~a" id-or-selector)
id-or-selector))
(cl (mk-js-array class))
(cl (if (list? class) class (list class)))
)
(webview-call-js wv
(with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" cl.forEach(function(c) {"
" el.classList.remove(c);"
" });"
" return id;"
"}") cl))
)
(λ (id el)
(let ((cl (eval cl)))
(send cl forEach
(λ (c)
(send (js-dot el classList) remove c))))
id)))
)
)
; (with-selector sel
; (format
;; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " cl.forEach(function(c) {"
; " el.classList.remove(c);"
; " });"
; " return id;"
; "}") cl))
; )
; )
; )
(define/contract (webview-set-style! wv selector style-entries)
(-> wv-win? (or/c symbol? string?) (or/c kv? list-of-kv?) hash?)
(-> wv-win? (or/c symbol? string?) (or/c kv? list-of-kv?) (or/c hash? boolean?))
(let ((sel (if (symbol? selector)
(format "#~a" selector)
selector))
(cl (mk-js-array (if (kv? style-entries)
(list style-entries)
style-entries)))
;(cl (mk-js-array (if (kv? style-entries)
; (list style-entries)
; style-entries)))
(cl (if (kv? style-entries)
(list style-entries)
style-entries))
)
(webview-call-js wv
(with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" cl.forEach(function(st) {"
" el.style[st[0]] = st[1];"
" });"
" return id;"
"}") cl))
(λ (id el)
(let ((cl (eval cl)))
(send cl forEach
(λ (st)
(set! (js-ref
(js-dot el style)
(js-ref st 0))
(js-ref st 1))))
id)))
)
)
)
; (format
; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " cl.forEach(function(st) {"
; " el.style[st[0]] = st[1];"
; " });"
; " return id;"
; "}") cl))
; )
; )
; )
(define/contract (webview-get-style wv selector styles)
(-> wv-win? (or/c symbol? string?) (or/c symbol? list-of-symbol?) (or/c list? hash?))
(-> wv-win? (or/c symbol? string?) (or/c symbol? list-of-symbol?) (or/c list? hash? boolean?))
(let ((sel (if (symbol? selector)
(format "#~a" selector)
selector))
(cl (mk-js-array (if (symbol? styles)
(list styles)
styles)))
(cl (if (symbol? styles)
(list styles)
styles))
;(cl (mk-js-array (if (symbol? styles)
; (list styles)
; styles)))
)
(let ((r (webview-call-js wv
(with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" let r = {};"
" cl.forEach(function(st) {"
" let stl = window.getComputedStyle(el);"
" r[st] = stl[st];"
" });"
" return { id: id, style: r };"
"}") cl))
)))
(let ((h (hash-ref r 'with-ids)))
(let ((l (map (λ (e) (cons (string->symbol (hash-ref e 'id)) (hash-ref e 'style))) h)))
(if (symbol? selector)
(cdr (car l))
l)))
(let ((js-code (with-selector sel
(λ (id el)
(let ((cl (eval cl))
(r '()))
(send cl forEach
(λ (st)
(send console log st)
(let ((stl (send window getComputedStyle el)))
(set! (js-ref r st) (js-ref stl st)))))
(send console log r)
(return (list (list 'id id)
(list 'style (send Object entries r))))))))
)
(displayln js-code)
(let ((r (webview-call-js wv js-code)))
; (format
; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " let r = {};"
; " cl.forEach(function(st) {"
; " let stl = window.getComputedStyle(el);"
; " r[st] = stl[st];"
; " });"
; " return { id: id, style: r };"
; "}") cl))
; )))
(display "Result: ") (write r) (newline)
(if (eq? r #f)
#f
(let ((h (hash-ref r 'with-ids)))
(let ((l (map (λ (e)
(let ((id-rec (car e))
(style-rec (cadr e)))
(cons (string->symbol (cadr id-rec))
(make-hash (map (λ (e) (cons (to-symbol (car e)) (cadr e))) (cadr style-rec)))
)
)) h)))
(displayln (format "l = ~a" l))
(write l)(newline)
; l = ((volume-meter . #hash((display . none))))
; ((volume-meter . #hash(("display" . "none"))))
(if (symbol? selector)
(cdr (car l))
l)))))
)
)
)
(define/contract (webview-unset-style! wv selector style-entries)
(-> wv-win? (or/c symbol? string?) (or/c symbol? list-of-symbol?) hash?)
(-> wv-win? (or/c symbol? string?) (or/c symbol? list-of-symbol?) (or/c hash? boolean?))
(let ((sel (if (symbol? selector)
(format "#~a" selector)
selector))
(cl (mk-js-array (if (symbol? style-entries)
(list style-entries)
style-entries)))
(cl (if (symbol? style-entries)
(list style-entries)
style-entries))
)
(webview-call-js wv
(with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" cl.forEach(function(st) {"
" el.style[st] = '';"
" });"
" return id;"
"}") cl)
)
)
(λ (id el)
(let ((cl (eval cl)))
(send cl forEach
(λ (st)
(set! (js-ref
(js-dot el style)
st) "")))
id))))
)
)
; (format
; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " cl.forEach(function(st) {"
; " el.style[st] = '';"
; " });"
; " return id;"
; "}") cl)
; )
; )
; )
; )
(define/contract (webview-set-attr! wv selector attr-entries)
(-> wv-win? (or/c symbol? string?)
(or/c kv? list-of-kv?) hash?)
(or/c kv? list-of-kv?) (or/c hash? boolean?))
(let* ((sel (if (symbol? selector)
(format "#~a" selector)
selector))
@@ -999,29 +1131,44 @@
([rgba? v] (rgba->hex v))
(else (format "~a" v))))
)) ae*))
(cl (mk-js-array ae**))
;(cl (mk-js-array ae**))
(cl ae**)
)
;(display cl)
(webview-call-js wv
(with-selector sel
(format
(js-code
"function(id, el) {"
" let cl = ~a;"
" cl.forEach(function(av) {"
" el.setAttribute(av[0], av[1]);"
" });"
" return id;"
"}") cl))
)
(λ (id el)
(let ((cl (eval cl)))
(send cl forEach
(λ (av)
(send el setAttribute (js-ref av 0)
(js-ref av 1))))
id))))
)
)
; (with-selector sel
; (format
; (js-code
; "function(id, el) {"
; " let cl = ~a;"
; " cl.forEach(function(av) {"
; " el.setAttribute(av[0], av[1]);"
; " });"
; " return id;"
; "}") cl))
; )
; )
; )
(define/contract (webview-attr wv id attr)
(-> wv-win? symbol? (or/c symbol? string?) (or/c string? boolean?))
(let ((v (webview-call-js wv
(with-id id el
-> (format "el.getAttribute('~a');" attr))
)))
(with-id->el id el
(return (send el getAttribute (eval attr)))))))
;(with-id id el
; -> (format "el.getAttribute('~a');" attr))
;)))
(if (eq? v 'null)
#f
v)
+340
View File
@@ -0,0 +1,340 @@
#lang scribble/manual
@(require (for-label racket/base
"../private/js-transform.rkt"))
@title{JavaScript Transformation}
@author[@author+email["Hans Dijkema" "hans@dijkewijk.nl"]]
@defmodule[racket-webview/private/js-transform]
This module provides a small compile-time DSL for generating JavaScript source
text from Racket-like forms. It is used internally by the webview
implementation to construct JavaScript snippets in a structured way, without
having to write the complete snippet as one raw string.
The module exports only @racket[js]. The other forms described in this section
are DSL forms recognized by @racket[js]; they are not exported as separate
bindings.
@defform[
(js js-statement ...)
]{
Transforms each @racket[js-statement] into JavaScript source text. The result
is a string. The generated string is not evaluated by Racket and no JavaScript
is executed by this module.
Each top-level statement is emitted with a trailing semicolon and newline. The
resulting string can be passed to the webview layer for injection or execution
in the browser context.
For example:
@racketblock[
(define source
(js
(set! window.myfunc
(λ (x)
(let* ((el (send document getElementById 'hi))
(y (* x x)))
(send el setAttribute "x" (+ y "")))
(send console log "did set attribute x on element hi")))))
]
This generates JavaScript source that assigns a function to
@tt{window.myfunc}. The function looks up a DOM element, calculates a value,
sets an attribute, and writes a message to the JavaScript console.
}
@section{Primitive values}
Numbers are emitted as JavaScript numeric literals. Strings are emitted as
double-quoted JavaScript strings, with embedded double quotes escaped.
Identifiers are emitted as JavaScript names.
For example:
@racketblock[
(js
(send console log "hello")
(send console log 42))
]
Symbols can be quoted to produce JavaScript string values:
@racketblock[
(js
(send console log 'hello))
]
@section{Function calls and method calls}
A form that is not recognized as a special DSL form is treated as a JavaScript
function call:
@racketblock[
(js
(alert "Hello from Racket"))
]
This generates a JavaScript call to @tt{alert}.
Method calls can be written with @racket[send]:
@racketblock[
(js
(send document getElementById 'hi))
]
The @racket[send] form has the shape:
@racketblock[
(send object method arg ...)
]
and generates a JavaScript method call of the form:
@codeblock|{
object.method(arg, ...)
}|
For example, @racket[(send document getElementById 'hi)] generates a call shaped
like:
@codeblock|{
document.getElementById("hi")
}|
Using @racket[send] keeps the method-call structure explicit in the DSL. It is
usually clearer than writing dotted JavaScript names directly as function names.
@section{Operators}
The DSL supports a small set of JavaScript infix operators.
@itemlist[
#:style 'compact
@item{@racket[(+ a b ...)], @racket[(- a b ...)],
@racket[(* a b ...)] and @racket[(/ a b ...)] generate arithmetic infix
expressions.}
@item{@racket[(and a b ...)] and @racket[(or a b ...)] generate JavaScript
@tt{&&} and @tt{||} expressions.}
@item{@racket[(> a b)], @racket[(< a b)], @racket[(>= a b)],
@racket[(<= a b)], @racket[(== a b)], @racket[(=== a b)] and
@racket[(!= a b)] generate JavaScript comparison expressions.}
]
For example:
@racketblock[
(js
(define (inside-range x)
(if (and (> x 10) (< x 15))
(return x)
(return (* x x)))))
]
@section{Definitions and assignments}
@defform[(define (name arg ...) body ...)]{
Generates a JavaScript function declaration.
@racketblock[
(js
(define (square x)
(return (* x x))))
]
This produces a JavaScript function named @tt{square}.
}
@defform[(set! name expr)]{
Generates a JavaScript assignment.
@racketblock[
(js
(set! window.answer 42))
]
This produces an assignment to @tt{window.answer}.
}
@section{Functions}
@defform[(lambda (arg ...) body ...)]{
Generates a JavaScript function expression.
}
@defform[(λ (arg ...) body ...)]{
Equivalent to @racket[lambda].
}
For example:
@racketblock[
(js
(set! window.square
(λ (x)
(return (* x x)))))
]
A function body may contain more than one DSL statement:
@racketblock[
(js
(set! window.f
(λ (x)
(send console log x)
(return (* x x)))))
]
@section{Control flow and statement blocks}
@defform[(if condition then-expr else-expr)]{
Generates a JavaScript @tt{if}/@tt{else} statement. The condition is translated
as a JavaScript expression. The two branches are translated as JavaScript
statements.
@racketblock[
(js
(define (f x)
(if (> x 0)
(return x)
(return (- 0 x)))))
]
}
@defform[(begin body ...)]{
Generates a JavaScript block.
@racketblock[
(js
(if (> x 10)
(begin
(send console log x)
(return x))
(return 0)))
]
}
@defform[(return expr)]{
Generates a JavaScript @tt{return} statement.
@racketblock[
(js
(define (id x)
(return x)))
]
}
@section{Sequential bindings}
@defform[(let* ((id expr) ...) body ...)]{
Generates a JavaScript block with sequential @tt{let} declarations, followed by
the generated body statements.
@racketblock[
(js
(let* ((x 10)
(y (* x x)))
(send console log y)
(return y)))
]
The plain @racket[let] form is intentionally not supported in a JavaScript
context. Use @racket[let*] instead, so that the generated JavaScript bindings
remain explicitly sequential.
}
@section{Lists}
@defform[(list expr ...)]{
Generates a JavaScript array literal.
@racketblock[
(js
(send console log (list 1 2 3)))
]
}
@defform[(cons expr list-expr)]{
Generates JavaScript that prepends a value to an array-like expression by
concatenating a one-element array with the translated list expression.
For example:
@racketblock[
(js
(send console log (cons x (cons y (list z)))))
]
This generates JavaScript shaped like:
@codeblock|{
console.log([ x].concat([ y].concat([ z])));
}|
}
@section{Embedding Racket values}
@defform[(eval value)]{
Embeds a simple Racket value as a JavaScript literal at expansion time. The
supported values are strings, symbols, numbers and lists containing those same
kinds of values.
@racketblock[
(define names '(alice bob charlie))
(js
(send console log (eval names)))
]
The value is converted to JavaScript source text before the generated JavaScript
is returned.
}
@section{Example}
The following example combines function definition, method calls, list
construction, sequential bindings and a lambda expression passed to a JavaScript
method:
@racketblock[
(define source
(js
(define (f x y z)
(send console log (cons x (cons y (list z))))
(let* ((l (cons x (cons y (list z)))))
(return
(send l map
(λ (a)
(return (+ a 10)))))))))
]
This generates a JavaScript function that logs an array, constructs the same
array in a local binding, maps over it, and returns the mapped result.
@section{Limitations}
This transformer is intentionally small. It is not a complete JavaScript
parser, not a JavaScript evaluator and not a general Racket-to-JavaScript
compiler. Unrecognized forms are generally treated as JavaScript function
calls. This keeps the implementation compact, but it also means that some
mistakes may produce JavaScript source that only fails when the browser runs the
generated code.
The generated source is intended for small snippets used by the webview layer,
not for translating arbitrary Racket programs to JavaScript.
-60
View File
@@ -1,60 +0,0 @@
#lang scribble/manual
@(require racket/base
scribble/core
(for-label racket/base
racket/string
racket/file))
@title{mimetypes}
@author[@author+email["Hans Dijkema" "hans@dijkewijk.nl"]]
@defmodule[racket-webview/mimetypes]
MIME type utilities used by the webview library.
This module provides a mapping from file extensions to MIME types together with
a function to determine the MIME type of a file path.
@section{Overview}
The module is used by the local HTTPS server to determine the correct
@tt{Content-Type} header when serving files.
MIME types are determined based on the file extension.
@section{Function: path->mimetype}
@defproc[(path->mimetype [p path-string?]) string?]{
Returns the MIME type associated with @racket[p].
The file extension of @racket[p] is extracted and used to look up the
corresponding MIME type.
If the extension is not recognized, a default MIME type is returned.
}
@section{Mapping}
The module contains a predefined mapping from file extensions to MIME types.
Typical mappings include:
@itemlist[#:style 'compact
@item{@tt{.html} → @tt{text/html}}
@item{@tt{.css} → @tt{text/css}}
@item{@tt{.js} → @tt{application/javascript}}
@item{@tt{.json} → @tt{application/json}}
@item{@tt{.png} → @tt{image/png}}
@item{@tt{.jpg}, @tt{.jpeg} → @tt{image/jpeg}}
@item{@tt{.svg} → @tt{image/svg+xml}}]
The exact mapping is defined in the source code and can be extended if needed.
@section{Notes}
The returned MIME type is always a string suitable for use in HTTP response
headers.
File extensions are interpreted case-insensitively.
+27
View File
@@ -0,0 +1,27 @@
#lang scribble/manual
@(require racket/runtime-path
scribble/core
)
@title{@elem{racket-webview}}
@table-of-contents[]
@include-section["racket-webview-intro.scrbl"]
@include-section["wv-context.scrbl"]
@include-section["wv-settings.scrbl"]
@include-section["wv-window.scrbl"]
@include-section["menu.scrbl"]
@include-section["wv-dialog.scrbl"]
@include-section["wv-element.scrbl"]
@include-section["wv-input.scrbl"]
@include-section["js-transform.scrbl"]
@include-section["racket-webview.scrbl"]
@include-section["racket-webview-qt.scrbl"]
@include-section["rgba.scrbl"]
@include-section["rktwebview-api.scrbl"]
@include-section["rktwebviewqt-internals.scrbl"]
@index-section[]
+2 -2
View File
@@ -16,7 +16,7 @@
"../wv-dialog.rkt"
"../wv-settings.rkt"
"../rgba.rkt"
"../mimetypes.rkt"
racket-mimetypes
"../racket-webview-version.rkt"))
@@ -63,7 +63,7 @@ The public API is divided into the following modules:
@item{@racketmodname[racket-webview/wv-dialog] — dialog windows}
@item{@racketmodname[racket-webview/wv-settings] — settings wrapper}
@item{@racketmodname[racket-webview/rgba] — RGBA color values}
@item{@racketmodname[racket-webview/mimetypes] — MIME type lookup}]
@item{@racketmodname[racket-mimetypes] — MIME type lookup}]
@section{Typical Usage}
+11 -1
View File
@@ -7,6 +7,8 @@
(provide wv-element%)
(define displ display)
(define wv-element%
(class object%
(init-field window
@@ -50,7 +52,15 @@
(when (not (null? d))
(let ((d* (string->symbol (format "~a" (car d)))))
(webview-set-style! wv element-id (list 'display d*))))
(string->symbol (hash-ref (webview-get-style wv element-id 'display) 'display)))
(let ((style-hash (webview-get-style wv element-id 'display)))
(displ "style-hash: ") (write style-hash) (newline)
(let ((display-style (hash-ref (if (eq? style-hash #f)
(make-hash)
style-hash) 'display #f)))
(displayln display-style)
(if (eq? display-style #f)
#f
(string->symbol display-style)))))
(define/public (visibility . v)
(when (not (null? v))