Skip to content

Conversation

@3015pavan
Copy link

This PR implements a code-folding plugin to address issue #4042, adding support for collapsing and expanding large code blocks to improve readability.

What this adds

A new optional plugin that allows users to collapse/expand code blocks, making it easier to manage long code samples in documentation, tutorials, and code reviews.

Features

  • Automatic folding controls: Adds collapse/expand buttons to code blocks with 10+ lines
  • Smart auto-folding: Automatically folds blocks exceeding 50 lines (configurable)
  • Opt-in approach: Requires code-folding class - doesn't affect existing code
  • Customizable behavior: Control via data-fold and data-fold-threshold attributes
  • Visual feedback: Shows hidden line count with gradient fade effect
  • Accessible: Includes ARIA labels and keyboard navigation support
  • Plugin compatible: Works seamlessly with line-numbers, toolbar, and other plugins

Usage

<!-- Basic usage -->
<pre class="language-javascript code-folding"><code>
// Your code here
</code></pre>

<!-- Never auto-fold -->
<pre class="language-python code-folding" data-fold="false"><code>
# Your code here
</code></pre>

<!-- Custom threshold: fold if more than 30 lines -->
<pre class="language-java code-folding" data-fold-threshold="30"><code>
// Your code here
</code></pre>

LeaVerou and others added 27 commits June 23, 2025 23:43
Move to separate modules:
- `highlightAll()`
- `highlightElement()`
- `highlight()`
- `stringify()`
Was fixed in PrismJS#3949 (in the `simplify` branch). Move it here to make testing easier.
- Move `tokenize()`, `_matchGrammar()` (and related code), and `resolve()` to separate modules.
- Ditch the `tokenize` symbol in favor of the `$tokenize` special property. Since symbols are excluded from the `for…in` loop, and `$tokenize` is not a symbol, to preserve the previous behavior, we need to handle it in `_matchGrammar` explicitly.
- Switch from `[tokenize]` to `$tokenize` in languages.

---
Co-authored-by: Dmitry Sharabin <dmitrysharabin@gmail.com>
Now, the user can include Prism the way they used to (except v2 now uses the Autoloader plugin under the hood, so more languages can be highlighted right out of the box):

```html
<link rel="stylesheet" href="themes/prism.css" />
<script src="prism.js"></script>
```

Besides, they have access to the Prism instance via `globalThis`.
… global bundle

Co-Authored-By: Dmitry Sharabin <dmitrysharabin@gmail.com>
- Ditch the `global` bundle in favor of `prism.global.ts` that is output to `prism.js` (see below)
- Remove chunks

Rel to PrismJS#3984.
The global bundle generated only one file (`prism.js` from `auto-start.ts`) in the IIFE format. When `prism.js` was included on a web page, it created an instance of Prism (as it should) and exposed it. The plugins and languages _were not_ part of the global bundle. When we included one of those plugins, we imported an instance of Prism (`globalPrism`) from a module that is _part of another bundle_, which the global bundle was unaware of. During that process, a new instance of Prism was created, and the imported plugin attached itself to that instance, not the one we had expected (the first one instantiated). The global bundle and the plugins didn't share the same modules, since they were parts of different bundles. This should be fixed now.

Co-authored-by: Lea Verou <lea@verou.me>
…3987)

* Autolinker

* Autoloader

* Command Line

* Copy to Clipboard

* Custom Class

* Data URI Highlight

* Diff Highlight

* Download Button

* File Highlight

* Filter Highlight All

* Highlight Keywords

* Inline Color

* JSONP Highlight

* Keep Markup

* Line Highlight

* Match Braces

* Normalize Whitespace

* Previewers

* Show Invisibles

* Show Language

* Toolbar

* Treeview Icons

* Unescaped Markup

* WPD
Before, when using the global bundle, we get the `Uncaught (in promise) TypeError: Failed to resolve module specifier './index.js'. The base URL is about:blank because import() is called from a CORS-cross-origin script.` error.
…ismJS#3990)

* Introduce the concept of base language

Co-authored-by: Lea Verou <lea@verou.me>

* Improve the type system

So that authors defining a language shouldn’t add `!` everywhere they refer to  `base`.

---------

Co-authored-by: Lea Verou <lea@verou.me>
* Transform actionscript

* Transform arduino

* Transform cilkcpp

* Transform birb

* Transform aspnet

* Transform cilkc

* Transform crystal

* Transform d

* Transform dart

* Transform firestore-security-rules

* Transform flow

* Transform fsharp

* Transform glsl

* Transform gml

* Transform go

* Transform gradle

* Transform groovy

* Transform haxe

* Transform hlsl

* Transform idris

* Transform java

* Transform javascript

* Transform jolie

* Transform jsdoc

* Transform json5

* Transform jsonp

* Transform kotlin

* Transform less

* Transform markup

* Transform mongodb

* Transform n4js

* Transform objectivec

* Transform opencl

* Transform phpdoc

* Transform plsql

* Transform processing

* Transform protobuf

* Transform purebasic

* Transform purescript

* Transform qore

* Transform qsharp

* Transform racket

* Transform reason

* Transform ruby

* Transform sass

* Transform scala

* Transform scss

* Transform solidity

* Transform sparql

* Transform sqf

* Transform squirrel

* Transform textile

* Transform v

* Transform vala

* Transform vbnet

* Transform velocity

* Transform wiki

* Transform xeora

* Transform xquery

* Transform bison

* Transform c

* Transform chaiscript

* Transform javadoc

* Transform markdown

* Transform csharp

* Transform parser
* Transform `src/core/prism.ts`

* Transform `src/core/stringify.ts`

* Transform `src/core/classes/hooks.ts`

* Transform `src/core/highlight.ts`

* Transform `src/core/highlight-all.ts`

* Transform `src/core/highlight-element.ts`

* Transform `src/config.ts`

* Transform `src/core/tokenize/tokenize.ts`

* Transform `src/core/classes/prism.ts`

* Transform `src/core.ts`

* Transform `src/global.ts`

* Transform `src/index.ts`

* Transform `src/auto-start.ts`

* Transform `src/util`

* Transform `src/shared`

* Transform `src/prism.global.ts`

* Transform `src/shared/languages`

* Transform `src/shared/meta`

* Transform `src/shared.ts`

* Transform `src/core/classes/token.ts`

* Transform `src/core/tokenize/util.ts`

* Transform `src/core/tokenize/match.js`

* Transform `src/core/registry.ts`

* Transform `src/load-languages.ts`

* Transform `src/core/linked-list.ts`

* Transforming `tests/`

* Transforming `tests/core`

* Transforming `tests/helper`

* Partially transform languages

* Transform the rest of the languages

* Remove TS files from `src/languages`

* Remove TS files from `tests/`

* Remove TS files from `tests/core`

* Remove TS files from `tests/helper`

* Transform plugins and remove corresponding TS files

* Transform `tests/plugins`

* Tests don't depend on TS anymore

* Remove TS files from `src/`

* Remove TS files from `src/shared`

* Remove TS files from `src/shared/languages`

* Remove TS files from `src/shared/meta`

* Remove TS files from `src/util`

* Remove TS files from `src/core` and sub-directories

* Fix imports in `types.d.ts`

* Transform `scripts`

* Transform `benchmark`

* Adjust ESLint rules

* Build types

* Get rid of TS

We use it to build types only.

* Run `npm run build`

We updated the comment in the build script, so it should be updated in the corresponding CSS file.

* Improve types for hooks

* Improve types for token

* Improve types for Prism config

* Improve types for registry

* Improve types for Prism class

* Improve types for highlight methods

* Improve types for stringify

* Improve types for linked list

* Adjust types in tokenize functions

* Fix types in `load-languages.js`

* Improve types of util functions

* Adjust types for shared/languages

* Fix types in plugins

* Fix types for tests

* Fix types for tokenize string

* Fix types for language definitions

* Another iteration on types

* And one more

* And a bit more fixes

* [plugins] Add missed template specifier

* [languages] Add types to `export default`s

* Fix types in scripts

* Remove `@private` and `@default` to correctly generate types

* Some improvements to types in tests

* [benchmark] Some tweaks of types

* Re-enable types check in JS files

- Restore `tsconfig.json` but allow implicit `any`
- Add the `typecheck` NPM script
- Adjust the build script (use `tsconfig.json` and remove redundant code)

* Fix type inconsistencies in core files and plugins

* Fix some (fixable) TS errors

* Fix the rest of the type errors in language definitions
Now, it’s aligned with language and theme names.

- Adjust other plugins' imports and docs, scripts, test helpers, and `components.json` accordingly
- Add the corresponding export rule to `package.json`
- In most cases, it's a simple file rename
- Restore `tsconfig.json` for tests
- Adjust types and fix TS errors
- Add corresponding NPM scripts
…mJS#4016)

It allows referencing required languages inside grammar definitions via the `language` property of an options object passed to the `grammar()` function. So, we don't need to expose the `getLanguage()` function to grammar authors.

- Don't pass `getLanguage()` to the `grammar()` function
- Don't mutate the language proto when the base grammar is specified (firstly, it's a bug, secondly, we don't want to define the base language as a property of the `languages` object—it's for the required languages only)
- Add new utility functions for working with objects (authored by @LeaVerou)
- Improve the type system to support the updated signature of `grammar()`
- Update definitions of languages previously relied on `getLanguage()`

Co-authored-by: Lea Verou <lea@verou.me>
- Add utils authored by @LeaVerou: `isObject()`, `isPlainObject()`, `deepMerge()`, `deepClone()`, `betterAssign()`,`insert()`, and `insertAfter()`. Update `insertBefore()` accordingly.
- Update `extend()` to support new special properties (`$insertBefore`, `$insertAfter`, `$insert`, `$delete`, and `$merge`) that allow defining grammars more declaratively and adding a new `grammarPatch()` util (all authored by @LeaVerou). See PrismJS#3927 for details.
- Adjust TS types and config to support the new API.
- Fix TS errors.

No breaking changes are introduced.
This plugin adds support for collapsing and expanding large code blocks to improve readability when viewing documentation, tutorials, or code reviews with multiple code examples.

Features:
- Automatic collapse/expand buttons for code blocks with 10+ lines
- Configurable auto-folding for very large blocks (default 50+ lines)
- Data attributes for customization (data-fold, data-fold-threshold)
- Smooth transitions and accessible keyboard controls
- Works alongside other plugins (line numbers, toolbar, etc)
- Shows line count and gradient fade effect when folded

Usage:
Add the code-folding class to pre or code elements to enable the feature.

Resolves issue PrismJS#4042
@netlify
Copy link

netlify bot commented Dec 1, 2025

Deploy Preview for dev-prismjs-com ready!

Name Link
🔨 Latest commit 09154b6
🔍 Latest deploy log https://app.netlify.com/projects/dev-prismjs-com/deploys/692dde051cf43d00088dc8c3
😎 Deploy Preview https://deploy-preview-4046--dev-prismjs-com.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link

github-actions bot commented Dec 1, 2025

JS File Size Changes (gzipped)

A total of 327 files have changed, with a combined diff of -33.02 KB (-100.0%).

Details
file master pull size diff % diff
assets/vendor/FileSaver.min.js 1.17 KB 0 Bytes -1.17 KB -100.0%
assets/vendor/jszip.min.js 29.43 KB 0 Bytes -29.43 KB -100.0%
assets/vendor/prefixfree.min.js 2.43 KB 0 Bytes -2.43 KB -100.0%
components/prism-abap.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-abnf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-actionscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ada.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-agda.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-al.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-antlr4.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-apacheconf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-apex.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-apl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-applescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-aql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-arduino.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-arff.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-armasm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-arturo.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-asciidoc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-asm6502.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-asmatmel.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-aspnet.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-autohotkey.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-autoit.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-avisynth.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-avro-idl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-awk.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bash.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-basic.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-batch.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bbcode.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bbj.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bicep.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-birb.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bison.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bnf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bqn.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-brainfuck.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-brightscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bro.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-bsl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-c.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cfscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-chaiscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cil.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cilkc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cilkcpp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-clike.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-clojure.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cmake.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cobol.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-coffeescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-concurnas.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cooklang.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-coq.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-core.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cpp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-crystal.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-csharp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cshtml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-csp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-css-extras.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-css.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-csv.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cue.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-cypher.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-d.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dart.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dataweave.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dax.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dhall.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-diff.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-django.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dns-zone-file.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-docker.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-dot.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ebnf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-editorconfig.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-eiffel.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ejs.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-elixir.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-elm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-erb.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-erlang.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-etlua.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-excel-formula.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-factor.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-false.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-firestore-security-rules.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-flow.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-fortran.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-fsharp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ftl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gap.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gcode.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gdscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gedcom.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gettext.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gherkin.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-git.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-glsl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gn.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-go-module.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-go.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-gradle.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-graphql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-groovy.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-haml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-handlebars.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-haskell.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-haxe.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-hcl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-hlsl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-hoon.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-hpkp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-hsts.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-http.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ichigojam.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-icon.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-icu-message-format.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-idris.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-iecst.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ignore.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-inform7.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ini.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-io.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-j.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-java.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-javadoc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-javadoclike.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-javascript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-javastacktrace.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jexl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jolie.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jq.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-js-extras.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-js-templates.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jsdoc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-json.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-json5.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jsonp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jsstacktrace.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-jsx.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-julia.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-keepalived.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-keyman.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-kotlin.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-kumir.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-kusto.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-latex.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-latte.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-less.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-lilypond.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-linker-script.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-liquid.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-lisp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-livescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-llvm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-log.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-lolcode.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-lua.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-magma.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-makefile.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-markdown.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-markup-templating.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-markup.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-mata.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-matlab.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-maxscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-mel.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-mermaid.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-metafont.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-mizar.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-mongodb.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-monkey.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-moonscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-n1ql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-n4js.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nand2tetris-hdl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-naniscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nasm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-neon.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nevod.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nginx.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nim.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nix.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-nsis.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-objectivec.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ocaml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-odin.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-opencl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-openqasm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-oz.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-parigp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-parser.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-pascal.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-pascaligo.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-pcaxis.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-peoplecode.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-perl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-php-extras.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-php.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-phpdoc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-plant-uml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-plsql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-powerquery.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-powershell.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-processing.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-prolog.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-promql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-properties.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-protobuf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-psl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-pug.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-puppet.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-pure.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-purebasic.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-purescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-python.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-q.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-qml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-qore.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-qsharp.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-r.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-racket.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-reason.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-regex.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-rego.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-renpy.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-rescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-rest.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-rip.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-roboconf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-robotframework.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-ruby.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-rust.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sas.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sass.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-scala.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-scheme.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-scss.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-shell-session.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-smali.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-smalltalk.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-smarty.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-solidity.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-solution-file.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-soy.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sparql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-splunk-spl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sqf.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-sql.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-squirrel.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-stan.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-stata.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-stylus.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-supercollider.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-swift.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-systemd.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-t4-cs.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-t4-templating.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-t4-vb.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-tap.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-tcl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-textile.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-toml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-tremor.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-tsx.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-tt2.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-turtle.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-twig.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-typescript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-typoscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-unrealscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-uorazor.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-uri.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-v.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-vala.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-vbnet.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-velocity.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-verilog.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-vhdl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-vim.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-visual-basic.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-warpscript.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-wasm.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-web-idl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-wgsl.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-wiki.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-wolfram.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-wren.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-xeora.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-xml-doc.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-xojo.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-xquery.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-yaml.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-yang.min.js 0 Bytes 0 Bytes 0 Bytes 0%
components/prism-zig.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/autolinker/prism-autolinker.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/autoloader/prism-autoloader.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/command-line/prism-command-line.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/custom-class/prism-custom-class.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/data-uri-highlight/prism-data-uri-highlight.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/diff-highlight/prism-diff-highlight.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/download-button/prism-download-button.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/file-highlight/prism-file-highlight.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/filter-highlight-all/prism-filter-highlight-all.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/highlight-keywords/prism-highlight-keywords.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/inline-color/prism-inline-color.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/jsonp-highlight/prism-jsonp-highlight.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/keep-markup/prism-keep-markup.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/line-highlight/prism-line-highlight.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/line-numbers/prism-line-numbers.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/match-braces/prism-match-braces.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/normalize-whitespace/prism-normalize-whitespace.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/previewers/prism-previewers.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/show-invisibles/prism-show-invisibles.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/show-language/prism-show-language.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/toolbar/prism-toolbar.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/treeview/prism-treeview.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/unescaped-markup/prism-unescaped-markup.min.js 0 Bytes 0 Bytes 0 Bytes 0%
plugins/wpd/prism-wpd.min.js 0 Bytes 0 Bytes 0 Bytes 0%

Generated by 🚫 dangerJS against 09154b6

@3015pavan
Copy link
Author

Implemented code-folding plugin for issue #4042. Adds collapse/expand buttons to large code blocks (opt-in via "code-folding" class).
Let me know if any changes needed. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants