Git Product home page Git Product logo

semantic-ui-less's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

semantic-ui-less's Issues

Making the package importable [Meteor]

Hi all,

I'm hoping to be able to use the LESS stuff in my application, and after a comment from @splendido on crater, I thought I'd have a quick look and see what I could get done.

Here is the initial set of changes I've made to the package to allow me to import it into a Meteor application.

The changes I made are fairly lightweight, but as far as I can see will not allow for external themes to be applied over the top, but it's a start! Here are the steps I took:

  1. SemanticUI-LESS$ find . -type f -name "*.overrides" -exec mv "{}" "{}".import.less \;
  2. SemanticUI-LESS$ find . -type f -name "*.variables" -exec mv "{}" "{}".import.less \;
  3. Create default theme.config file (I changed themes/ to themes, and site/ to _site, and theme.less to theme.less.import.less)
  4. Change theme.less totheme.less.import.lessortheme.import.less` (I used the former to follow the pattern I used on the overrides/variables files)
  5. Update package.js to have .import.less on the files changed, and add theme.config to the addFiles array.

If you're not familiar with the less processor in Meteor, it will ignore files ending .import.less.

The package now processes all the remaining .less files in the order they are in the array provided to api.addFiles(). This order may need changing to match the build order if some parts of the LESS depend on others. My knowledge of LESS is rather shallow, and I've only really had a short look at the gulp build stuff.

A brief experiment has shown that I cannot set something like @button: 'amazon'; and have it affect the build process inside the package. My current plan is to find out if having the Semantic-UI-LESS package include only the default theme, and reference the main repository for any theme examples. If that works (I can't see why not), then my next investigation will be into whether I can use and imply the main package in a theme package and add my LESS theme into that as a custom package... we shall see!

Anyhow, this is the start I've made, let me know what you think etc :)

Does this include icons?

Planning on using this with my Elm app, and moving away from Bootstrap. At the moment we use Webpack to copy over the node_modules/font-awesome/fonts directory to our app's assets/fonts directory. Will I need to do something similar when using this LESS framework, or does it include the fonts already? Thanks.

Variable list

Thanks for making this project!

Is there a list of all the variables available that we can define in our override files?

How to use included javascript?

Hi, sorry if this is a dumb question, but I'm struggling to find any documentation that helps. I'm using gulp to build from semantic.less however I'm a little confused about the best way to use the included javascript. Do I just concatenate the files from behaviors, globals and modules? Is there a 'catch all' file like semantic.less? Can I just cherry-pick from the modules that I want to use or do I need to include the behaviors and site.js for proper functionality?

Thanks in advance.

How can I get modules to work?

I do not want to use react-semantic-ui because it is a pain getting modules like dropdown to render correctly. I have all the styles and actionless components working with only this build through some webpack magic, but I cannot get the js files to register.

Right now I have an app with a client.js entry that imports the following:

semantic.js

//Import jQuery and define for Semantic-UI-Less Modules
import jQuery from 'jquery'
window.jQuery = jQuery

// Import the styles.
import 'web/styles/site.less'

// Glob the module js requirements.
const importAll = r => { r.keys().forEach(r) }
importAll(require.context('semantic-ui-less/definitions/', true, /\.js$/))

The app.js build is inflated by a couple megs, and I confirmed the code in there, but I cannot perform any js actions on the modules. For instance, $.fn.* seems to be set in the semantic js code, but $.fn is undefined when I attempt to access it via console.

Any pointers on getting this working will be greatly appreciated.

Note that jQuery and $ are globally available when tested from console.

Request: please add 'css' Less 'Import Option' to font imports

Webpack 4 builds failed which included Semantic-UI less files that featured a web font:

Can't resolve './https://fonts.googleapis.com/css?family=Roboto' in '/MY_PROJECT_DIR/node_modules/semantic-ui-less/themes/material/elements'

The following comment on another repo answered my problem; Import url tries to resolve directory #67

To assist Webpack to load Semantic-UI less files, which include web fonts downloaded from a CDN such as Google, please add Less Import Option css.

For example; themes/material/elements/button.overrides would change from;

@import url(https://fonts.googleapis.com/css?family=Roboto);

.ui.primary.button:hover {
  box-shadow:
    0px 0px 0px 1px rgba(0, 0, 0, 0.3) inset,
    0px 2px 3px 0px rgba(0, 0, 0, 0.35) !important
  ;
}

.ui.secondary.button:hover {
  box-shadow:
    0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset,
    0px 2px 3px 0px rgba(0, 0, 0, 0.3) !important
  ;
}

to;

@import (css) url(https://fonts.googleapis.com/css?family=Roboto);

.ui.primary.button:hover {
  box-shadow:
    0px 0px 0px 1px rgba(0, 0, 0, 0.3) inset,
    0px 2px 3px 0px rgba(0, 0, 0, 0.35) !important
  ;
}

.ui.secondary.button:hover {
  box-shadow:
    0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset,
    0px 2px 3px 0px rgba(0, 0, 0, 0.3) !important
  ;
}

Recursive variable definition with less 3.x

Module build failed (from ./node_modules/less-loader/dist/cjs.js):

@theme: @@element;
      ^
Recursive variable definition for @placeholder
      in ..\node_modules\semantic-ui-less\theme.less (line 9, column 8)

Been getting this error with the 2.4.1 release and am trying to figure out what this means.

@import (multiple) "~semantic-ui-less/theme.less";

I do have the proper import.But I am just not sure where this error is coming form?
Any suggestions to tackle this error?

Building with webpack somehow makes loading animation void

Checking the compiled css though, the animation is definitely defined and the property settings seem to be good. However, the loading animation will just stop there, as if the animation was not defined / incorrectly configured.

I didn't change/overwritten anything.

By loading animation I mean the rotating circular indicator you get when adding .loading to <form>.

Possible to compile source with only Less compiler?

I have an existing build system and I would like to customize Semantic UI. Is it possible to compile semantic.less using only lessc? I tried to compile semantic.less using only lessc and was outputted an erroneous CSS file.

Certain calc fields not generated correctly

semantic-ui-less 2.4.1
less 3.9.0
Running in a Rails 5.2 app using webpacker 3.5.5.

@attachedWidth: calc(100% + (-@attachedHorizontalOffset * 2));

@borderWidth: 1px;
@attachedHorizontalOffset: -@borderWidth;
@attachedWidth: calc(100% + (-@attachedHorizontalOffset * 2));

results in @attachedWidth being calc(100% + (--1px * 2)), which is not valid.

I'm only having this happen in my development environment. Possibly a minifier/compressor is correcting to calc(100% + 2px).

Adding this override fixes it:

@attachedWidth: calc(100% + (@attachedHorizontalOffset * -2));

Basic Blue Circular Label has Blue Background

I notice label has this rule:

.ui.basic.blue.label {
background-color: @basicBackground !important;
color: @blue !important;
border-color: @blue !important;
}

@basicBackground is a variable designed to specify the whole background property - not simply a color (none @white). Therefore, this is an invalid value and it falls back to the blue background.

I believe background-color should simply be set to @white for this rule. I made an override locally, but am thinking to submit a PR for this.

Without new Rule:
without_rule

With new Rule:
with_new_rule

Failed to compile with existing Vue Project

I have a VueJS App and I want to integrate Semantic UI. I installed the package and necessary loaders. I keep getting an error when trying to compile:

These relative modules were not found:

* ./themes/themes/default/assets/fonts/brand-icons.eot in ./node_modules/css-loader??ref--10-oneOf-2-1!./node_modules/postcss-loader/lib??ref--10-oneOf-2-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-2-3!./node_modules/semantic-ui-less/semantic.less

In my theme.config I have the following lines

/*******************************
            Folders
*******************************/

/* Path to theme packages */
@themesFolder : "themes";

/* Path to site override folder */
@siteFolder  : 'site';


/*******************************
         Import Theme
*******************************/

@import "node_modules/semantic-ui-less/theme.less";

/* End Config */    

The ./themes/themes[...] is very suspisious, of course that folder structure doesn't exist.

Any suggestions? Thanks!

flags.png is missing from the material theme

when trying to set the theme as material in theme.config, I get

Module not found: Error: Can't resolve './themes/material/assets/images/flags.png' in /node_modules/semantic-ui-less

way to reproduce - jus change set the theme in theme.config as material instead of default for all components.

solution - copying the images folder from the default theme to material solves the issue.

How do you use a custom font path for the icons?

I have my own, custom Gulp build system that I'm trying to use with this repo. It's working great, except for one thing; I can't seem to change the path that the exported CSS looks for the icon sets on the server.

I tried putting @fontPath: "fonts"; in my site.variables file, but that didn't change anything.

Is there anyway to change this?

Failed to compile

I'm trying to use semantic-ui-less with existing vue.js 2 project.
I'm getting the following:

 ERROR  Failed to compile with 1 errors                                                                                                  

 error  in ./node_modules/semantic-ui-less/semantic.less

Module build failed:

// load the styles
var content = require("!!../css-loader/index.js??ref--9-1!../postcss-loader/lib/index.js??ref--9-2!../less-loader/dist/cjs.js??ref--9-3!./semantic.less");
          ^
Unrecognised input
      in (some_path)/node_modules/semantic-ui-less/semantic.less (line 4, column 12)

Here's my webpack config:

  module: {
    rules: [
      {
       test: /\.css$/,
       use: ['vue-style-loader', 'css-loader']
      },
      {
        test: /\.less$/,
        use: ['vue-style-loader', 'css-loader', 'less-loader']
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
     (...)
```
Any ideas what I'm doing wrong?


Could you add composer.json also?

Hi,
is it possible to add composer.json to this repository? I would like to use this project as dependency on environments without node.js

Thank you

How are you supposed to use it as dependency e. G. via NPM?

Quote from readme:

Before using source files you will need to create a theme.config by renaming theme.config.example, and a site folder by renaming _site/ to site/

So when I install it as dependency e. G. via NPM, you want me to make changes in vendor directory?
The components all import theme.config from the repositories own source location, which is as dependency a vendor directory.

Normally you have:

  1. Variables configuration file
  2. Separate component files
  3. Root file, which bundles the separate components
  4. Root file, which imports 1. and then 3.

This way, you can: simply use 4. or, in my case: copy 1. in my Project folder, modify it. Import it, then import 3. - voilà. A common approach for an easy task.

My first thoughts after finding this was: Okay, maybe wrong repo which is not intended for this type of usage, but:

I'v looked through all semantic repos and could not find any repo which is themable
via variables and does not introduce vendor hacking.

Sure I can just grab all the stuff and copy it into my project, or do other possible dirty things. But I work with dozens of other modules using webpack and all deps are resolved properly. I do not have vendor in VCS and if I update deps, everything is fine resolved and rebuild. Why must this repo be handled as an outsider with manual handling and dirty hacks?

Is there a reason, why the approach I'v mentioned above is not possible or used here? I assume a reason is there I'm not aware of, or its maybe planed change?

🔴 LESS files should have .less extension

All LESS files should have .less file extension. It not only best practice to do so but also there are issues with webpack loaders which do not recognise and do not process correctly .variables and .overrides files. theme.config file should have .less extension as well.
Furthermore when including other less files, path should have .less extension (see for example semantic.less imports)

less-loader: Unrecognised input

I just installed semantic-ui-less and used less-loader in order to include in my webpack setup. When i try to compile to project i got

module.exports = __webpack_public_path__ + "static/media/theme.05e4814c.config";
             ^
Unrecognised input
      in /Users/thupiceylons/wiseflow/app/src/localdata/reactjs/node_modules/semantic-ui-less/theme.config (line 1, column 15)

webpack: 3.8.1
less-loader: 4.0.5
less: 2.7.3

As far as i know the less loader is not able read theme.config :-) Or maybe somthing could be wrong with my webpack setup :-)

@ribbonOffset: Operation on an invalid type (Less 3.5.x compatibility)

As noted in #30 (comment), 3.5.x versions of less breaks compatibility for inlining @-expressions within math operations.

ERROR in ./src/assets/styles/semantic/semantic.less (./node_modules/css-loader!./node_modules/less-loader/dist/cjs.js!./src/assets/styles/semantic/semantic.less)
Module build failed: 

@ribbonMargin: 1rem;
@ribbonOffset: ~"calc("-@ribbonMargin~" - "@ribbonTriangleSize~")";
^
Operation on an invalid type
      in [project root]/node_modules/semantic-ui-less/themes/default/elements/label.variables (line 133, column 0)
 @ ./src/assets/styles/semantic/semantic.less 2:14-136 21:1-42:3 21:134-42:2 22:19-141
 @ ./src/index.jsx
 @ multi webpack-hot-middleware/client whatwg-fetch ./src/index.jsx

less/less.js#3265 (comment) states that the changes have been reverted, but a new version has yet to come out. When the next version comes out, we should assert that this version. Edit: It seems this will not fix our problem, after all (see #46 (comment)).

data: is not secure

there are some instances, step, dropdowns, rating, checkbox, accordion that use data:

/* Dropdown Carets */
@font-face {
  font-family: 'Dropdown';
  src:
    url(data:application/x-font-ttf;charset=utf-8;bas

As per
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/font-src

This is unsafe, could you please replace this data: with references to specific assets inside semantic-ui folders?

Webpack currently is able to build this package semantic-ui without problems, but on production this is very unsecure use of data:

The solution is simple and just replacing this for the asset could fix it

Thanks

Way to suppress colors completly ?

Hi !

Is there a way to remove some colors completely to reduce size of generated css ?
I do not use 60% of the colors and there is no benefit to compile them.

The same applies to sizes..

Thanks !

Can't find theme.config

So I've set semantic-ui-less as an npm dependancy for my project, I then include @import "semantic-ui-less/semantic.less"; in my project less file and add the theme.config file next to it.

Run my project gulp file to compile the less and it complains:

Error: '../../theme.config' wasn't found. Tried - node_modules/semantic-ui-less/theme.config,../theme.config,../../theme.config in file node_modules/semantic-ui-less/definitions/modules/transition.less line no. 20

Can I not simply include semantic ui as a dependancy rather than having to commit the entire thing?

Confused!

Require issue

If you try to include this module using require/require.resolve() then it will fail because you use a package.js file instead of a index.js which is the default file it looks for.

You don't have to rename the file however you should just add a key in the package.json file telling it which file to look for:
main: 'packages.js'

This causes issues for anyone trying to use this for their own modules.

problem with gulp-less compiling semantic-ui-less

Anyone familiar with this error?

 Error in plugin 'gulp-less'
Message:
    'site//modules/transition.overrides' wasn't found. Tried - /Users/hey/projects/superpages/frontend/semantic/site/modules/transition.overrides,site/modules/transition.overrides in file /Users/hey/projects/superpages/frontend/semantic/theme.less line no. 47
Details:
    type: File
    filename: /Users/hey/projects/superpages/frontend/semantic/theme.less
    index: 1082
    line: 47
    callLine: NaN
    callExtract: undefined
    column: 2
    extract:   @import "@{themesFolder}/@{theme}/@{type}s/@{element}.overrides";,  @import "@{siteFolder}/@{type}s/@{element}.overrides";,}
    lineNumber: 47
    fileName: /Users/hey/projects/superpages/frontend/semantic/theme.less

Building with webpack resolves @transition wrong

shapes.less contains this:

 .ui.shape.animating .sides {
  transition: @transition;
}

After providing my own themes.config, setting @transition to 'default' I get the following in the compiled semantic.css file:

.ui.shape.animating .sides {
  -webkit-transition: 'default';
  transition: 'default';
}

So it seems that @transition is resolved with the value in the themes.config file instead of the value in the shape.variables file.
This results in the shape animation transitions not working.

This is my webpack config for less files:

  module: {
    rules: [
      { test: /\.less$/, loader: ExtractTextPlugin.extract('css-loader?sourceMap!postcss-loader!less-loader?sourceMap') }
        ...
    ]
  },
  plugins: [
    ...
    new ExtractTextPlugin('./public/[name].css')
  ],
  devtool: '#source-map',
  entry: {
    semantic: './src/semantic.less'
  },
  output: {
    filename: './public/[name].css'
  }
};

Update to latest version

Main repo release is at 2.2.6 for some time now but the less is not updated.

Please fix this, thanks.

Make LESS 3.x compatible

Tried to run this with the latest LESS 3.x (3.0.0-alpha.3) release and got following error:

SyntaxError: variable @googleProtocol is undefined in C:\dev\teams-client-sdk\packages\semantic-ui-less\definitions\globals\site.less
on line 25, column 1:
24
25 .loadFonts();
26

Not yet sure why though.

Everything works fine with version 2.7.2.

Semantic Fluid Container Component not does not take available width

Steps to Reproduce

Using Semantic Container Component with fluid passed as props still gets a max-width 1480px above 1200px

Expected

The Container should have width as 100% or auto if fluid prop has been passed.

Result

The Container does not is not fluid even though it gets the class fluid because .ui.container gets a max-width css property which is not overwritten when fluid class is added.
screenshot from 2017-08-31 12 06 53

Incorrect fontPath in default theme

Doesn't work

@fontPath  : '../../themes/default/assets/fonts';

Works

@fontPath  : '../../../themes/default/assets/fonts';

Steps to repro:

  1. Grab fresh 2.4.1 code
  2. Rename theme.config.example to theme.config
  3. Compile using lessc

The compilation should fail due to font lookup from [...]/themes/themes/default[...].

Bower

While semantic-ui and semantic-ui-sass are available in bower, semantic-ui-less is not. Would it be possible to get this added to bower?

ember-cli and theme overrides

So I have the following in my theme.config:

/*******************************
            Folders
*******************************/

/* Path to theme packages */
@themesFolder : 'src/themes';

/* Path to site override folder */
@siteFolder  : 'app/styles/site';

/*******************************
         Import Theme
*******************************/

@import "app/styles/theme.less";

/* End Config */

If I copy the themes folder and put it in the app/styles directory and then change @themesFolder to point to app/styles/themes, I get this after doing ember server:

NameError: variable @positiveTextShadow is undefined in bower_components/semantic-ui/src/definitions/elements/button.less on line 3212, column 16:
3211   color: @positiveTextColor;
3212   text-shadow: @positiveTextShadow;
3213   background-image: @coloredBackgroundImage;

File: bower_components/semantic-ui/src/definitions/elements/button.less (3212)
The Broccoli Plugin: [LessCompiler] failed with:
undefined

So what am I doing wrong? I am using the ember-cli-less package. I have the following in my ember-cli-build.js file:

var app = new EmberApp(defaults, {
        lessOptions: {
            paths: [
                'bower_components/semantic-ui',
                'app/pods/components'
            ]
        },
        outputPaths: {
            app: {
                css: {
                    app: "assets/css/project.css"
                },
                js: "assets/js/project.js"
            },
            vendor: {
                css: "assets/css/vendor.css",
                js: "assets/js/vendor.js"
            }
        },
        SemanticUI: {
            css: false,
            javascript: true,
            fonts: true,
            cssPath: "assets/css"
        },
    });

I tried getting this looked at on the Semantic-UI-ember repository, but they didn't help. What is the correct way to point to your own custom themes folder?

Assets are missing from NPM bundle

When installing from npm (yarn), all themes/*/assets are missing now.

Installed with

⟩ yarn add semantic-ui-less --dev
yarn add v1.1.0
[1/5] Resolving packages...
[2/5] Fetching packages...
[3/5] Linking dependencies...
[4/5] Building fresh packages...
[5/5] Cleaning modules...
success Saved lockfile.
success Saved 1 new dependency.
└─ [email protected]
Done in 13.40s.

Assets grep:

find node_modules/semantic-ui-less | grep assets

And of course, my webpack build fails, now.

Transition: There is no css animation matching the one you specified.

I use this template:

<html>
    <head>
        <meta charset="UTF-8">
        <link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.11.8/semantic.css" rel="stylesheet"/>
        <!--<link href="semantic.css" rel="stylesheet"/>--> 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.11.8/semantic.js"></script>
    </head>
    <body>
        <form class="ui form">
            <div class="required field">
                <label>Nick</label>
                <div class="ui input">
                    <input type="text" placeholder="Nick" name="nick">
                </div>
            </div>
            <button class="ui submit button">Submit</button>
        </form>
        <script>
        $('form').form({
            nick: {
                identifier: 'nick',
                rules: [
                    {
                        type: 'empty',
                        prompt: 'Required'
                    }
                ]
            }
        },  {
            inline: true,
            on: 'blur'
        });
        </script>
    </body>
</html>

If I use semantic.css from dist, everything works.
But, if I compile semantic.css using less, transitions don't work.
I created a theme.config by renaming theme.config.example, and a site folder by renaming _site/ to site/

I use this command:

lessc node_modules/semantic-ui-less/semantic.less semantic.css

Due to this bug the promt label won't disappear.

Module Build Failed: Missing closing ')'

When I import semantic-ui-less in my Vue Project, everything is setup. Getting this error.

Module build failed:


;(function ($, window, document, undefined) {
                                          ^
Missing closing ')'
      in /Users/Developer/ui/node_modules/semantic-ui-less/definitions/modules/transition.js (line 11, column 44)

secondaryPointingInvertedBorderColor is not being used as it should

If you pick a different secondaryPointingInvertedBorderColor value than secondaryPointingBorderColor, it would not be used.

/* Inverted */
.ui.secondary.inverted.pointing.menu {
border-color: @secondaryPointingInvertedBorderColor;
}
.ui.secondary.inverted.pointing.menu {
border-width: @secondaryPointingBorderWidth;
border-color: @secondaryPointingBorderColor;
}

Should we swap both those rules?

Use @brandFontName for brand icon's font-family CSS rule

Bug Report

The @brandFontName variable is not consumed in icon.overrides as it should be.

Steps

I have an open PR with the fix.

Expected Result

If I want to use different icon libraries aside from those offered by SUI, overriding the @brandFontName variable should render the icons that I want.

Actual Result

Overriding the @brandFontName variable does not render my third-party icons.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.