diff --git a/_config.yml b/_config.yml
index dc37ba19..87e013e4 100644
--- a/_config.yml
+++ b/_config.yml
@@ -8,6 +8,7 @@ searchIndexName: Crawler-DBR-Docs-New
searchNeedFilter: true
useVersionTree: true
+useJSVersionV3: true
features: /barcode-reader/docs/core/programming/features/
usecases: /barcode-reader/docs/core/programming/usecases/
diff --git a/_data/full_tree.yml b/_data/full_tree.yml
index 77a9c90a..bcfae504 100644
--- a/_data/full_tree.yml
+++ b/_data/full_tree.yml
@@ -1,36 +1,9 @@
tree_file_list:
- sidelist-full-tree.html
- sidelist-programming/sidelist-architecture.html
- - sidelist-programming/sidelist-architecture-v10.5.3000.html
- sidelist-programming/sidelist-performance.html
- sidelist-programming/sidelist-parameters-organization.html
- sidelist-programming/sidelist-parameter-reference.html
- sidelist-programming/sidelist-parameters.html
- - sidelist-programming/sidelist-parameters-v10.5.3000.html
- sidelist-programming/sidelist-understanding.html
- - sidelist-programming/sidelist-understanding-v10.4.3100.html
- - sidelist-programming/sidelist-understanding-v10.5.3000.html
- - sidelist-programming/programming-javascript.html
- - sidelist-programming/programming-javascript-v10.5.3000.html
- - sidelist-programming/programming-javascript-v10.4.3100.html
- - sidelist-programming/programming-javascript-v10.2.1000.html
- - sidelist-programming/programming-javascript-v10.0.21.html
- - sidelist-programming/programming-javascript-v9.6.42.html
- - sidelist-programming/programming-javascript-v9.6.11.html
- - sidelist-programming/programming-javascript-v9.0.2.html
- - sidelist-programming/programming-javascript-v8.8.7.html
- - sidelist-programming/programming-javascript-v8.8.5.html
- - sidelist-programming/programming-javascript-v8.8.3.html
- - sidelist-programming/programming-javascript-v8.6.3.html
- - sidelist-programming/programming-javascript-v8.6.0.html
- - sidelist-programming/programming-javascript-v8.4.0.html
- - sidelist-programming/programming-javascript-v8.2.5.html
- - sidelist-programming/programming-javascript-v8.2.3.html
- - sidelist-programming/programming-javascript-v8.2.1.html
- - sidelist-programming/programming-javascript-v8.2.0.html
- - sidelist-programming/programming-javascript-v8.1.3.html
- - sidelist-programming/programming-javascript-v8.1.2.html
- - sidelist-programming/programming-javascript-v8.1.0.html
- - sidelist-programming/programming-javascript-v8.0.0.html
- - sidelist-programming/programming-javascript-v7.6.0.html
- - sidelist-programming/programming-javascript-v7.5.0.html
\ No newline at end of file
+ - sidelist-programming/programming-javascript.html
\ No newline at end of file
diff --git a/_data/product_version.yml b/_data/product_version.yml
index 8d0dac0d..b2fc7d16 100644
--- a/_data/product_version.yml
+++ b/_data/product_version.yml
@@ -1,59 +1,6 @@
useGroupedVersion: true
version_info_list_js:
- - value: latest version(11.0.6000)
- - value: 11.x
- child:
- - 11.0.3000
+ - value: latest version
- value: 10.x
- child:
- - 10.5.3000
- - 10.4.3100
- - 10.4.2002
- - 10.2.1000
- - 10.0.21
- - 10.0.20
- - value: 9.x
- child:
- - 9.6.42
- - 9.6.40
- - 9.6.33
- - 9.6.32
- - 9.6.31
- - 9.6.30
- - 9.6.21
- - 9.6.20
- - 9.6.11
- - 9.6.10
- - 9.6.2
- - 9.6.1
- - 9.6.0
- - 9.3.1
- - 9.3.0
- - 9.2.13
- - 9.2.12
- - 9.2.11
- - 9.0.2
- - 9.0.1
- - 9.0.0
- - value: 8.x
- child:
- - 8.8.7
- - 8.8.5
- - 8.8.3
- - 8.8.0
- - 8.6.3
- - 8.6.0
- - 8.4.0
- - 8.2.5
- - 8.2.3
- - 8.2.1
- - 8.2.0
- - 8.1.3
- - 8.1.2
- - 8.1.0
- - 8.0.0
- - value: 7.x
- child:
- - 7.6.0
- - 7.5.0
+ - value: 9.x or older
diff --git a/_includes/sidelist-programming/programming-javascript-v10.0.21.html b/_includes/sidelist-programming/programming-javascript-v10.0.21.html
deleted file mode 100644
index 847517ac..00000000
--- a/_includes/sidelist-programming/programming-javascript-v10.0.21.html
+++ /dev/null
@@ -1,1165 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-
- User Guide
-
-
-
- Samples and Demos
-
-
-
- API Reference
-
-
-USEFUL RESOURCES
-
- Release Notes
-
-
-
- Upgrade Instructions
-
-
-
-
- FAQ
-
-
-OTHERS
-
- Develop for Mobile or Server/Desktop
-
diff --git a/_includes/sidelist-programming/programming-javascript-v10.2.1000.html b/_includes/sidelist-programming/programming-javascript-v10.2.1000.html
deleted file mode 100644
index 9140bd94..00000000
--- a/_includes/sidelist-programming/programming-javascript-v10.2.1000.html
+++ /dev/null
@@ -1,1599 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-
- User Guide
-
-
-
- Samples and Demos
-
-
-
- API Reference
-
-
-USEFUL RESOURCES
-
- Release Notes
-
-
-
- Upgrade Instructions
-
-
-
-
- FAQ
-
-
-OTHERS
-
- Develop for Mobile or Server/Desktop
-
diff --git a/_includes/sidelist-programming/programming-javascript-v10.4.3100.html b/_includes/sidelist-programming/programming-javascript-v10.4.3100.html
deleted file mode 100644
index 0114cb1c..00000000
--- a/_includes/sidelist-programming/programming-javascript-v10.4.3100.html
+++ /dev/null
@@ -1,1687 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-
- User Guide
-
-
-
- Samples and Demos
-
-
-
- API Reference
-
-
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-understanding.html" -%}
-USEFUL RESOURCES
-
- Release Notes
-
-
-
- Upgrade Instructions
-
-
-
-
- FAQ
-
-
-License Initialization
-
diff --git a/_includes/sidelist-programming/programming-javascript-v10.5.3000.html b/_includes/sidelist-programming/programming-javascript-v10.5.3000.html
deleted file mode 100644
index 89446655..00000000
--- a/_includes/sidelist-programming/programming-javascript-v10.5.3000.html
+++ /dev/null
@@ -1,1627 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-
- User Guide
-
-
-
- Samples and Demos
-
-
- API Reference
-
-
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-understanding.html" -%}
-USEFUL RESOURCES
-
- Release Notes
-
-
-
- Upgrade Instructions
-
-
-
-
- FAQ
-
-
-License Initialization
-
diff --git a/_includes/sidelist-programming/programming-javascript-v7.5.0.html b/_includes/sidelist-programming/programming-javascript-v7.5.0.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v7.5.0.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v7.6.0.html b/_includes/sidelist-programming/programming-javascript-v7.6.0.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v7.6.0.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.0.0.html b/_includes/sidelist-programming/programming-javascript-v8.0.0.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.0.0.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.1.0.html b/_includes/sidelist-programming/programming-javascript-v8.1.0.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.1.0.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.1.2.html b/_includes/sidelist-programming/programming-javascript-v8.1.2.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.1.2.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.1.3.html b/_includes/sidelist-programming/programming-javascript-v8.1.3.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.1.3.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.2.0.html b/_includes/sidelist-programming/programming-javascript-v8.2.0.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.2.0.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.2.1.html b/_includes/sidelist-programming/programming-javascript-v8.2.1.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.2.1.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.2.3.html b/_includes/sidelist-programming/programming-javascript-v8.2.3.html
deleted file mode 100644
index ddf0a8ae..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.2.3.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.2.5.html b/_includes/sidelist-programming/programming-javascript-v8.2.5.html
deleted file mode 100644
index 3b00b1de..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.2.5.html
+++ /dev/null
@@ -1,68 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.4.0.html b/_includes/sidelist-programming/programming-javascript-v8.4.0.html
deleted file mode 100644
index b6522b6a..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.4.0.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.6.0.html b/_includes/sidelist-programming/programming-javascript-v8.6.0.html
deleted file mode 100644
index b6522b6a..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.6.0.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.6.1.html b/_includes/sidelist-programming/programming-javascript-v8.6.1.html
deleted file mode 100644
index b6522b6a..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.6.1.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.6.3.html b/_includes/sidelist-programming/programming-javascript-v8.6.3.html
deleted file mode 100644
index b6522b6a..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.6.3.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.8.3.html b/_includes/sidelist-programming/programming-javascript-v8.8.3.html
deleted file mode 100644
index ea272c38..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.8.3.html
+++ /dev/null
@@ -1,140 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.8.5.html b/_includes/sidelist-programming/programming-javascript-v8.8.5.html
deleted file mode 100644
index ea272c38..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.8.5.html
+++ /dev/null
@@ -1,140 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v8.8.7.html b/_includes/sidelist-programming/programming-javascript-v8.8.7.html
deleted file mode 100644
index ca4f6d8f..00000000
--- a/_includes/sidelist-programming/programming-javascript-v8.8.7.html
+++ /dev/null
@@ -1,140 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v9.0.2.html b/_includes/sidelist-programming/programming-javascript-v9.0.2.html
deleted file mode 100644
index ba829622..00000000
--- a/_includes/sidelist-programming/programming-javascript-v9.0.2.html
+++ /dev/null
@@ -1,142 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
-FAQ
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v9.6.11.html b/_includes/sidelist-programming/programming-javascript-v9.6.11.html
deleted file mode 100644
index f10ac450..00000000
--- a/_includes/sidelist-programming/programming-javascript-v9.6.11.html
+++ /dev/null
@@ -1,309 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
-FAQ
-
-
-OTHERS
-Develop for Mobile or Server/Desktop
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript-v9.6.42.html b/_includes/sidelist-programming/programming-javascript-v9.6.42.html
deleted file mode 100644
index a57c2041..00000000
--- a/_includes/sidelist-programming/programming-javascript-v9.6.42.html
+++ /dev/null
@@ -1,394 +0,0 @@
-
- Introduction
-
-DEVELOPMENT
-User Guide
-
-
-Samples and Demos
-
-
-API Reference
-
-
-USEFUL RESOURCES
-Release Notes
-
-
-Upgrade Instructions
-
-
-FAQ
-
-
-OTHERS
-Develop
- for Mobile or Server/Desktop
\ No newline at end of file
diff --git a/_includes/sidelist-programming/programming-javascript.html b/_includes/sidelist-programming/programming-javascript.html
index ba15d3af..4cc4c5e9 100644
--- a/_includes/sidelist-programming/programming-javascript.html
+++ b/_includes/sidelist-programming/programming-javascript.html
@@ -1388,6 +1388,10 @@
10.x
Version
9.x
+ Version
+ 8.x
+ Version
+ 7.6.0 and below
diff --git a/_includes/sidelist-programming/programming-js.html b/_includes/sidelist-programming/programming-js.html
deleted file mode 100644
index a85ade9c..00000000
--- a/_includes/sidelist-programming/programming-js.html
+++ /dev/null
@@ -1,1563 +0,0 @@
-DEVELOPMENT
-
- User Guide
-
-
-
- API Reference
-
-
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-understanding.html" -%}
-USEFUL RESOURCES
-
- Release Notes
-
-
-License Initialization
\ No newline at end of file
diff --git a/_includes/sidelist-programming/sidelist-architecture-v10.5.3000.html b/_includes/sidelist-programming/sidelist-architecture-v10.5.3000.html
deleted file mode 100644
index 295c5c28..00000000
--- a/_includes/sidelist-programming/sidelist-architecture-v10.5.3000.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
- Architecture
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/sidelist-parameter-reference-v10.4.2002.html b/_includes/sidelist-programming/sidelist-parameter-reference-v10.4.2002.html
deleted file mode 100644
index 25e0ef11..00000000
--- a/_includes/sidelist-programming/sidelist-parameter-reference-v10.4.2002.html
+++ /dev/null
@@ -1,204 +0,0 @@
-
- Parameter Reference
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/sidelist-parameters-v10.5.3000.html b/_includes/sidelist-programming/sidelist-parameters-v10.5.3000.html
deleted file mode 100644
index 6720abbf..00000000
--- a/_includes/sidelist-programming/sidelist-parameters-v10.5.3000.html
+++ /dev/null
@@ -1,207 +0,0 @@
-
- Parameters
-
-
\ No newline at end of file
diff --git a/_includes/sidelist-programming/sidelist-understanding-v10.4.3100.html b/_includes/sidelist-programming/sidelist-understanding-v10.4.3100.html
deleted file mode 100644
index 3f1297a8..00000000
--- a/_includes/sidelist-programming/sidelist-understanding-v10.4.3100.html
+++ /dev/null
@@ -1,6 +0,0 @@
-UNDERSTANDING DBR
-Overview of DCV
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-architecture.html" -%}
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-performance.html" -%}
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameters-organization.html" -%}
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameter-reference.html" -%}
\ No newline at end of file
diff --git a/_includes/sidelist-programming/sidelist-understanding-v10.5.3000.html b/_includes/sidelist-programming/sidelist-understanding-v10.5.3000.html
deleted file mode 100644
index 1f72e895..00000000
--- a/_includes/sidelist-programming/sidelist-understanding-v10.5.3000.html
+++ /dev/null
@@ -1,5 +0,0 @@
-UNDERSTANDING DBR
-Overview of DCV
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-architecture.html" -%}
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-performance.html" -%}
-{%- include liquid_searchVersionTreeFile.html ver=include.ver curPath=include.curPath targetRelativePath="sidelist-parameters.html" -%}
\ No newline at end of file
diff --git a/assets/js/dbrWebVersionSearch.json b/assets/js/dbrWebVersionSearch.json
deleted file mode 100644
index 7d4c2a70..00000000
--- a/assets/js/dbrWebVersionSearch.json
+++ /dev/null
@@ -1,214 +0,0 @@
-[
- {
- "version": "11.0.6000",
- "matchVersion": {
- "javascript": "3.0.6000"
- }
- },
- {
- "version": "11.0.3000",
- "matchVersion": {
- "javascript": "3.0.3001"
- }
- },
- {
- "version": "10.5.3000",
- "matchVersion": {
- "javascript": "2.6.1000"
- }
- },
- {
- "version": "10.4.3100",
- "matchVersion": {
- "javascript": "2.6.1000"
- }
- },
- {
- "version": "10.4.2002",
- "matchVersion": {
- "javascript": "2.4.2200"
- }
- },
- {
- "version": "10.2.1000",
- "matchVersion": {
- "javascript": "2.2.3000"
- }
- },
- {
- "version": "10.0.21",
- "matchList": {
- "javascript": {
- "dcvRepoWeb": [
- {
- "path": "/programming/javascript/api-reference/utility",
- "version": "1.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/license",
- "version": "3.0.30"
- },
- {
- "path": "/programming/javascript/api-reference/capture-vision-router",
- "version": "2.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/core",
- "version": "3.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/image-processing",
- "version": "2.0.20"
- }
- ],
- "dcvRepoCore": [
- {
- "path": "/enums/capture-vision-router",
- "version": "2.0.20"
- },
- {
- "path": "/enums/core",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/capture-vision-template",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/target-roi-def",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/barcode-reader-task-settings",
- "version": "10.0.20"
- },
- {
- "path": "/parameters/reference/image-parameter",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/barcode-format-specification",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/image-source-options",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/global-parameter",
- "version": "2.0.20"
- }
- ],
- "dce": "4.0.1"
- }
- }
- },
- {
- "version": "10.0.20",
- "matchList": {
- "javascript": {
- "dcvRepoWeb": [
- {
- "path": "/programming/javascript/api-reference/utility",
- "version": "1.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/license",
- "version": "3.0.30"
- },
- {
- "path": "/programming/javascript/api-reference/capture-vision-router",
- "version": "2.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/core",
- "version": "3.0.20"
- },
- {
- "path": "/programming/javascript/api-reference/image-processing",
- "version": "2.0.20"
- }
- ],
- "dcvRepoCore": [
- {
- "path": "/enums/capture-vision-router",
- "version": "2.0.20"
- },
- {
- "path": "/enums/core",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/capture-vision-template",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/target-roi-def",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/barcode-reader-task-settings",
- "version": "10.0.20"
- },
- {
- "path": "/parameters/reference/image-parameter",
- "version": "2.0.20"
- },
- {
- "path": "/parameters/reference/barcode-format-specification",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/image-source-options",
- "version": "3.0.20"
- },
- {
- "path": "/parameters/reference/global-parameter",
- "version": "2.0.20"
- }
- ],
- "dce": "4.0.1"
- }
- }
- },
- {
- "version": "9.6.42",
- "matchList": {
- "javascript": {
- "dce": "3.3.10"
- }
- }
- },
- {
- "version": "9.6.40",
- "matchList": {
- "javascript": {
- "dce": "3.3.10"
- }
- }
- },
- {
- "version": "9.6.33",
- "matchList": {
- "javascript": {
- "dce": "3.3.10"
- }
- }
- },
- {
- "version": "9.6.32",
- "matchList": {
- "javascript": {
- "dce": "3.3.9"
- }
- }
- },
- {
- "version": "9.6.31",
- "matchList": {
- "javascript": {
- "dce": "3.3.8"
- }
- }
- }
-]
\ No newline at end of file
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v8.2.5.md b/programming-old/javascript/api-reference/BarcodeReader-v8.2.5.md
deleted file mode 100644
index 2ddad1d5..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v8.2.5.md
+++ /dev/null
@@ -1,496 +0,0 @@
----
-layout: default-layout
-title: v8.2.5 BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK 8.2.5.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v8.2.5.html
----
-
-
-# BarcodeReader
-
-* `class BarcodeReader`
-
- The `BarcodeReader` class is used for decoding barcodes from images.
-
- ```js
- let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
- let results = await reader.decode(imageSource);
- for(let result of results){
- console.log(result.barcodeText);
- }
- ```
-
-## Index
-
-[**Initialize the Engine**](#initialize-the-engine)
-
-| Static Property | Description |
-|----------------------|-------------|
-| [engineResourcePath](#engineresourcepath) | Specifies the WASM engine URL. |
-| [_bUseFullFeature](#_busefullfeature) | If set to `true`, uses the full WASM engine. |
-
-| Static Method | Description |
-|----------------------|-------------|
-| [isLoaded](#isloaded) | Checks if the decoding module is loaded. |
-| [loadWasm](#loadwasm) | Manually loads and compiles the decoding WASM module. |
-
-
-
-[**Create and Destroy Instance**](#create-and-destroy-instance)
-
-| Property | Description |
-|----------------------|-------------|
-| [bDestroyed](#bdestroyed) | Indicates whether the instance has been destroyed. |
-
-| Static Method | Description |
-|----------------------|-------------|
-| [createInstance](#createinstance) | Creates a `BarcodeReader` instance. |
-
-| Method | Description |
-|----------------------|-------------|
-| [destroy](#destroy) | Destroies the `BarcodeReader` instance. |
-
-
-
-[**Decode Barcodes**](#decode-barcode)
-
-| Method | Description |
-|----------------------|-------------|
-| [decode](#decode) | Decodes barcodes from images, binary data, URLs, and more. |
-| [decodeBase64String](#decodebase64string) | Decodes barcodes from a base64 encoded string. |
-| [decodeUrl](#decodeurl) | Decodes barcodes from a URL. |
-| [decodeBuffer](#decodebuffer) | Decodes barcodes from raw image data. |
-
-
-
-[**Decoding Settings**](#decoding-settings)
-
-| Method | Description |
-|----------------------|-------------|
-| [getRuntimeSettings](#getruntimesettings) | Gets current runtime settings. |
-| [updateRuntimeSettings](#updateruntimesettings) | Modifies and updates the current runtime settings. |
-| [resetRuntimeSettings](#resetruntimesettings) | Resets runtime settings to default. |
-| [getModeArgument](#getmodeargument) | Gets argument value for the specified mode parameter. |
-| [setModeArgument](#setmodeargument) | Sets argument value for the specified mode parameter. |
-
-
-
-[**License**](#license)
-
-| Property | Description |
-|---------------------|-------------|
-| [productKeys](#productkeys) | Gets or sets the Dynamsoft Barcode Reader SDK product keys. |
-| [licenseServer](#licenseserver) | Specifies the license server URL. |
-| [handshakeCode](#handshakecode) | Uses Handshake Code to get authentication. |
-| [organizationID](#organizationid) | Uses Organization ID to get authentication. |
-| [sessionPassword](#sessionpassword) | Specifies a password to protect the Handshake Code from abuse. |
-
-
-
-[**Others**](#other)
-
-| Static Property | Description |
-|---------------------|-------------|
-| [version](#version) | Gets the current product version. |
-
-| Property | Description |
-|---------------------|-------------|
-| [bSaveOriCanvas](#bsaveoricanvas) | If set to `true`, saves the original image in `oriCanvas` . |
-| [oriCanvas](#oricanvas) | An [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) object that holds the original image. |
-
-| Static Method | Description |
-|----------------------|-------------|
-| [detectEnvironment](#detectenvironment) | Detects environments and gets a report. |
-
-## Initialize the Engine
-
-### engineResourcePath
-
-* `static` engineResourcePath: *string*
-
- Manually specifies the URL of Barcode Reader SDK engine (WASM) . The property needs to be set before [loadWasm](#loadwasm).
-
- ```js
- Dynamsoft.DBR.BarcodeReader.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.2.5/dist/";
- await Dynamsoft.DBR.BarcodeReader.loadWasm();
- ```
-
-
-
-### _bUseFullFeature
-
-* `static` _bUseFullFeature: *boolean* = false
-
- Whether to use full WASM engine. The property needs to be set before [loadWasm](#loadwasm). The default is 'false'.
-
- ```js
- DBR.BarcodeReader._bUseFullFeature = true;
- await DBR.BarcodeReader.loadWasm();
- ```
- Learn more about [differences between compact and full WASM engines](../user-guide/?ver=8.2.5#specify-which-engine-to-use).
-
-
-
-### isLoaded
-
-* `static` isLoaded(): *boolean*
-
- Checks if the decoding module is loaded.
-
-
-
-### loadWasm
-
-* `static` loadWasm(): *Promise<void>*
-
- Before most operations, `loadWasm` needs to be excuted firstly.
-
- Most time, you do not need excute `loadWasm` manually. Because when you excute [createInstance](#createinstance), `loadWasm` will be excuted implicitly.
-
- Some properties can't be changed after `loadWasm`.
-
- Calling `loadWasm` in advance can avoid the long wait when `createInstance`.
-
- ```js
- window.addEventListener('DOMContentLoaded', (event) => {
- DBR.BarcodeReader.loadWasm();
- });
- ```
-
-
-
-## Create and Destroy Instance
-
-### bDestroyed
-
-* bDestroyed: *boolean*
-
- Indicates whether the instance has been destroyed.
-
-
-
-### createInstance
-
-* `static` createInstance(): *Promise<[BarcodeReader](#barcodereader)>*
-
- Create a `BarcodeReader` instance.
-
- ```js
- let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
- ```
-
-
-
-### destroy
-
-* destroy(): *Promise<void>*
-
- Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances to avoid possible memory leaks.
-
-
-
-## Decode Barcode
-
-### decode
-
-* decode (source: *[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) | [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)*
-
- *| [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement) | [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) | [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)*
-
- *| string*): *Promise<[TextResult](./interface/TextResult.md)[]>*
-
- Decodes barcodes from an image.
-
- The main decoding method can accept a variety of data types, including binary data, images, base64 (with MIME), URL, etc.
-
- The image format can be `png`, `jpeg`, `bmp`, `gif` and a few others (some browsers support `webp`, `tif`).
-
- ```js
- let results = await reader.decode(blob);
- for(let result of results){
- console.log(result.barcodeText);
- }
-
- let results2 = await reader.decode(htmlImageElement);
- let results2 = await reader.decode(url);
-
- // like `data:image/png;base64,iV************`
- let results3 = await reader.decode(strBase64WithMime);
- ```
-
- And you can get a frame from the `HTMLVideoElement` for barcode scanning.
-
- ```js
- // The frame currently played will be decoded.
- let results;
- try{
- results = await reader.decode(htmlVideoElement);
- }catch(ex){
- // If no frame in the video, throws an exception.
- }
- ```
- If you need to continuously decode a video, you can use [BarcodeScanner](./BarcodeScanner.md) instead.
-
- *@see* [decodeBase64String](#decodebase64string), [decodeUrl](#decodeurl)
-
-
-
-### decodeBase64String
-
-* decodeBase64String(base64: *string*): *Promise<[TextResult](./interface/TextResult.md)[]>*
-
- The decoding method can accept base64 with or without MIME.
- e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-
- ```js
- let results = await reader.decodeBase64String(strBase64);
- for(let result of results){
- console.log(result.barcodeText);
- }
- ```
-
-
-
-### decodeUrl
-
-* decodeUrl(url: *string*): *Promise<[TextResult](./interface/TextResult.md)[]>*
-
- The decoding method can accept an URL. The URL source needs to be in the same domain or allowed Cross-Origin Resource Sharing (CORS).
-
- ```js
- let results = await reader.decodeUrl("./1.png");
- for(let result of results){
- console.log(result.barcodeText);
- }
- ```
-
-
-
-### decodeBuffer
-
-* decodeBuffer(
- buffer: *[Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray) | [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) | [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)*,
- width: *number*, height: *number*, stride: *number*,
- format: *[EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)*
- ): *Promise<[TextResult](./interface/TextResult.md)[]>*
-
- Decodes barcodes from raw image data.
-
-
-
-## Decoding Settings
-
-### getRuntimeSettings
-
-* getRuntimeSettings(): *Promise<[RuntimeSettings](./interface/RuntimeSettings.md)>*
-
- Gets current runtime settings.
-
- ```js
- let settings = await reader.getRuntimeSettings();
- settings.deblurLevel = 5;
- await reader.updateRuntimeSettings(settings);
- ```
-
-
-
-### updateRuntimeSettings
-
-* updateRuntimeSettings(settings: *[RuntimeSettings](./interface/RuntimeSettings.md) | string*): *Promise<void>*
-
- Updates runtime settings with a given struct or a string of `speed`, `balance` or `coverage` to use preset settings for `BarcodeReader`.
-
- The default runtime setting for BarcodeReader is `coverage`.
-
- ```js
- await reader.updateRuntimeSettings('balance');
- let settings = await reader.getRuntimeSettings();
- settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
- await reader.updateRuntimeSettings(settings);
- ```
-
-
-
-### resetRuntimeSettings
-
-* resetRuntimeSettings(): *Promise<void>*
-
- Resets all parameters to default values.
-
- ```js
- await reader.resetRuntimeSettings();
- ```
-
-
-
-### getModeArgument
-
-* getModeArgument(modeName: *string*, index: *number*, argumentName: *string*): *Promise<string>*
-
- Gets argument value for the specified mode parameter.
-
- ```js
- let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
- ```
-
- *@see* [C++ getModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=8.2.5#getmodeargument)
-
-
-
-### setModeArgument
-
-* setModeArgument(modeName: *string*, index: *number*, argumentName: *string*, argumentValue: *string*): *Promise<string>*
-
- Sets argument value for the specified mode parameter.
-
- ```js
- await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
- ```
-
- *@see* [C++ setModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=8.2.5#setmodeargument)
-
-
-
-## License
-
-### productKeys
-
-* `static` productKeys: *string*
-
- Gets or sets the Dynamsoft Barcode Reader SDK product keys.
-
- ```js
- Dynamsoft.DBR.BarcodeReader.productKeys = "PRODUCT-KEYS";
- ```
- For convenience, you can set `productKeys` in `script` tag instead.
-
- ```html
-
- ```
-
-
-
-### licenseServer
-
-* `static` licenseServer: *string[] | string*
-
- Specifies the license server URL.
-
-
-
-### handshakeCode
-
-* `static` handshakeCode: *string*
-
- Gets or sets the Dynamsoft Barcode Reader SDK handshake code. The `handshakeCode` is an alias of `productKeys`. Specifically refers to the key that requires network authentication.
-
- ```js
- Dynamsoft.DBR.BarcodeReader.handshakeCode = "123****-mytest";
- ```
- For convenience, you can set `handshakeCode` in `script` tag instead.
-
- ```html
-
- ```
-
-
-
-### organizationID
-
-* `static` organizationID: *string*
-
- Use organization ID to get authentication from network. Keep handshakeCode empty if you want to use default [handshake](#handshakecode) of the organization.
-
- ```js
- Dynamsoft.DBR.BarcodeReader.organizationID = "123****";
- ```
- For convenience, you can set `organizationID` in `script` tag instead.
-
- ```html
-
- ```
-
-
-
-### sessionPassword
-
-* `static` sessionPassword: *string*
-
- Specifies a password to protect the [Handshake Code](#handshakeCode).
-
- ```js
- Dynamsoft.DBR.BarcodeReader.handshakeCode = "123****-mytest";
- Dynamsoft.DBR.BarcodeReader.sessionPassword = "@#$%****";
- ```
- For convenience, you can set `organizationID` in `script` tag instead.
-
- ```html
-
- ```
-
-
-
-## Other
-
-### bSaveOriCanvas
-
-* bSaveOriCanvas: *boolean* = false;
-
- Whether to save the original image into canvas.
-
- ```js
- reader.bSaveOriCanvas = true;
- let results = await reader.decode(source);
- document.body.append(reader.oriCanvas);
- ```
-
-
-
-### oriCanvas
-
-* `readonly` oriCanvas: *[HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) | [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)*
-
- A [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) object that holds the original image.
-
- ```js
- reader.bSaveOriCanvas = true;
- let results = await reader.decode(source);
- document.body.append(reader.oriCanvas);
- ```
-
-
-
-### version
-
-* `readonly` `static` version: *string*
-
- Gets the current product version.
- Needs to call after [loadWasm](#loadwasm).
-
- ```js
- console.log(Dynamsoft.DBR.BarcodeReader.version); // "loading...(JS 8.2.5.20210426)"
- await Dynamsoft.DBR.BarcodeReader.loadWasm();
- console.log(Dynamsoft.DBR.BarcodeReader.version); // "8.4.0.8960(JS 8.2.5.20210426)"
- ```
-
-
-
-### detectEnvironment
-
-* `static` detectEnvironment(): *Promise<any>*
-
- Detects environments and gets a report.
-
- ```js
- console.log(Dynamsoft.DBR.BarcodeReader.detectEnvironment());
- // {"wasm":true, "worker":true, "getUserMedia":true, "camera":true, "browser":"Chrome", "version":90, "OS":"Windows"}
- ```
-
-
-
-
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v8.4.0.md b/programming-old/javascript/api-reference/BarcodeReader-v8.4.0.md
deleted file mode 100644
index 46788268..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v8.4.0.md
+++ /dev/null
@@ -1,463 +0,0 @@
----
-layout: default-layout
-title: v8.4.0 BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK v 8.4.0.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v8.4.0.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroy](#destroy) | Destroies the BarcodeReader instance. |
-| [bDestroyed](#bdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings](#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings](#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [bSaveOriCanvas](#bsaveoricanvas) | Whether to save the original image into a <canvas> element. |
-| [oriCanvas](#oricanvas) | An `HTMLCanvasElement` that holds the original image. |
-
-
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to the created `BarcodeReader` object.
-
-**Code snippet**
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-
-
-## destroy
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroy(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroy();
-```
-
-
-
-## bDestroyed
-
-Indicates whether the instance has been destroyed.
-
-```typescript
-readonly bDestroyed: boolean
-```
-
-
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | string): Promise
-```
-
-**Parameters**
-
-`source`: specifies the image to decode. The supported image formats include `png`, `jpeg`, `bmp`, `gif` and a few others (some browsers support `webp`, `tif`). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try{
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-}catch(ex){
- // If no frame in the video, throws an exception.
-}
-```
-
-**See also**
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-**Parameters**
-
-`base64Str`: specifies the image represented by a string.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL. Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-**Parameters**
-
-`url`: specifies the image with its URL.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeBuffer
-
-Decodes barcodes from raw image data.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat): Promise
-```
-
-**Parameters**
-
-`buffer`: specifies the image represented by a `Uint8Array`, `Uint8ClampedArray`, `ArrayBuffer`, `Blob` or `Buffer` object.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this image.
-
-**See also**
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-**Code snippet**
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-**See also**
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings
-- `speed`: fast but may miss a few codes;
-- `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-- `balance`: between `speed` and `coverage`;
-- `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-**Parameters**
-
-`settings`: a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-**See also**
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [BarcodeScanner](./BarcodeScanner.md) instance, it is equivalent to setting the `speed` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-**Parameters**
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-
-**Return value**
-
-A promise resolving to a string which represents the value of the argument.
-
-**Code snippet**
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-**See also**
-
-* [C++ getModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=8.4.0#getmodeargument)
-
-
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-**Parameters**
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-`argumentValue`: specifies the value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-**See also**
-
-* [C++ setModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=8.4.0#setmodeargument)
-
-
-
-## bSaveOriCanvas
-
-Whether to save the original image into a <canvas> element. The original image refers to the actual image the library tried to read barcodes from.
-
-Note that the result is an `HTMLCanvasElement` element and you can insert it into the DOM to show the image.
-
-```typescript
-bSaveOriCanvas: boolean;
-```
-
-**Default value**
-
-`false`
-
-**Code snippet**
-
-```js
-reader.bSaveOriCanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.oriCanvas);
-```
-
-
-
-## oriCanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-readonly oriCanvas: HTMLCanvasElement | OffscreenCanvas
-```
-
-**Code snippet**
-
-```js
-reader.bSaveOriCanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.oriCanvas);
-```
-
-**See also**
-
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v8.8.7.md b/programming-old/javascript/api-reference/BarcodeReader-v8.8.7.md
deleted file mode 100644
index 42432056..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v8.8.7.md
+++ /dev/null
@@ -1,468 +0,0 @@
----
-layout: default-layout
-title: v8.8.7 BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK v 8.8.7.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v8.8.7.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroyContext()](#destroycontext) | Destroies the BarcodeReader instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode()](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String()](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl()](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer()](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeReader` object.
-
-**Code snippet**
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-
-
-## destroyContext
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code snippet**
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroyContext();
-```
-
-
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | string): Promise
-```
-
-**Parameters**
-
-`source`: specifies the image to decode. The supported image formats include `png`, `jpeg`, `bmp`, `gif` and a few others (some browsers support `webp`, `tif`). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-> To speed up the reading, the image will be scaled down when it exceeds a size limit either horizontally or vertically. The limit is 2048 pixels on mobile devices and 4096 on other devices.
->
-> If the content in the binary data is raw img data, such as `RGBA`, please refer to [decodeBuffer()](#decodebuffer).
-
-
-**Return value**
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try{
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-}catch(ex){
- // If there is no frame in the video, throw an exception.
-}
-```
-
-**See also**
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-**Parameters**
-
-`base64Str`: specifies the image represented by a string.
-
-**Return value**
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL. Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-**Parameters**
-
-`url`: specifies the image by its URL.
-
-**Return value**
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeBuffer
-
-Decodes barcodes from raw image data. It is an advanced API, if you don't know what you are doing, use [decode](#decode) instead.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat): Promise
-```
-
-**Parameters**
-
-`buffer`: specifies the raw image represented by a `Uint8Array`, `Uint8ClampedArray`, `ArrayBuffer`, `Blob` or `Buffer` object.
-
-`width`: image width.
-
-`height`: image height.
-
-`stride`: `image-width * pixel-byte-length`.
-
-`format`: pixel format.
-
-**Return value**
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-**Code snippet**
-
-```js
-let results = await reader.decodeBuffer(u8RawImage, 1280, 720, 1280 * 4, Dynamsoft.DBR.EnumImagePixelFormat.IPF_ABGR_8888);
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-**See also**
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-**Code snippet**
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-**See also**
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings
-- `speed`: fast but may miss a few codes;
-- `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-- `balance`: between `speed` and `coverage`;
-- `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance.
-
-
-> NOTE
->
-> If the settings `barcodeFormatIds`, `barcodeFormatIds_2` and `region` have been changed by the customer, changing the template will preserve the previous settings.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-**Parameters**
-
-`settings`: a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-**See also**
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [BarcodeScanner](./BarcodeScanner.md) instance, it is equivalent to setting the `speed` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-**Parameters**
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-
-**Return value**
-
-A promise resolving to a string which represents the value of the argument.
-
-**Code snippet**
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-**See also**
-
-* [C++ getModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=latest#getmodeargument)
-
-
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-**Parameters**
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-`argumentValue`: specifies the value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code snippet**
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-**See also**
-
-* [C++ setModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=latest#setmodeargument)
-
-
-
-## ifSaveOriginalImageInACanvas
-
-Whether to save the original image into a <canvas> element. The original image refers to the actual image the library tried to read barcodes from.
-
-Note that the result is an `HTMLCanvasElement` element and you can insert it into the DOM to show the image.
-
-```typescript
-ifSaveOriginalImageInACanvas: boolean;
-```
-
-**Default value**
-
-`false`
-
-**Code snippet**
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-## getOriginalImageInACanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-getOriginalImageInACanvas(): HTMLCanvasElement | OffscreenCanvas
-```
-
-**Code snippet**
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-**See also**
-
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v9.0.2.md b/programming-old/javascript/api-reference/BarcodeReader-v9.0.2.md
deleted file mode 100644
index 8695c4aa..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v9.0.2.md
+++ /dev/null
@@ -1,681 +0,0 @@
----
-layout: default-layout
-title: v9.0.2 BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK v 9.0.2.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v9.0.2.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroyContext()](#destroycontext) | Destroies the BarcodeReader instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode()](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String()](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl()](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer()](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Decode Barcodes on multiple images from an Image Source
-
-| API Name | Description |
-|---|---|
-| [setImageSource](#setimagesource) | Sets an image source for continous scanning. |
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onImageRead](#onimageread) | This event is triggered after the library finishes scanning an image. |
-| [startScanning()](#startscanning) | Starts continuous scanning of incoming images. |
-| [stopScanning()](#stopscanning) | Stops continuous scanning. |
-| [pauseScanning()](#pausescanning) | Pause continuous scanning but keep the video stream. |
-| [resumeScanning()](#resumescanning) | Resumes continuous scanning. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Resets all parameters to default values. |
-| [outputRuntimeSettingsToString()](#outputruntimesettingstostring) | Return the current RuntimeSettings in the form of a string. |
-| [getModeArgument()](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-### Return Value
-
-A promise resolving to the created `BarcodeReader` object.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-## destroyContext
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | string): Promise
-```
-
-### Parameters
-
-`source`: specifies the image to decode. The supported image formats include `png`, `jpeg`, `bmp`, `gif` and a few others (some browsers support `webp`, `tif`). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-> To speed up the reading, the image will be scaled down when it exceeds a size limit either horizontally or vertically. The limit is 2048 pixels on mobile devices and 4096 on other devices.
->
-> If the content in the binary data is raw img data, such as `RGBA`, please refer to [decodeBuffer()](#decodebuffer).
-
-### Return Value
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try{
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-}catch(ex){
- // If there is no frame in the video, throw an exception.
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-### Parameters
-
-`base64Str`: specifies the image represented by a string.
-
-### Return Value
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL. Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-### Parameters
-
-`url`: specifies the image by its URL.
-
-### Return Value
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeBuffer
-
-Decodes barcodes from raw image data. It is an advanced API, if you don't know what you are doing, use [decode](#decode) instead.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat): Promise
-```
-
-### Parameters
-
-`buffer`: specifies the raw image represented by a `Uint8Array`, `Uint8ClampedArray`, `ArrayBuffer`, `Blob` or `Buffer` object.
-
-`width`: image width.
-
-`height`: image height.
-
-`stride`: `image-width * pixel-byte-length`.
-
-`format`: pixel format.
-
-### Return Value
-
-A promise resolving to a `TextResult\[\]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBuffer(u8RawImage, 1280, 720, 1280 * 4, Dynamsoft.DBR.EnumImagePixelFormat.IPF_ABGR_8888);
-for(let result of results){
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-### Code Snippet
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings
-
-* `speed`: fast but may miss a few codes;
-* `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-* `balance`: between `speed` and `coverage`;
-* `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance.
-
-> NOTE
->
-> If the settings `barcodeFormatIds`, `barcodeFormatIds_2` and `region` have been changed by the customer, changing the template will preserve the previous settings.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-### Parameters
-
-`settings`: a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [BarcodeScanner](./BarcodeScanner.md) instance, it is equivalent to setting the `speed` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-### Parameters
-
-None.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-## outputRuntimeSettingsToString
-
-Return the current RuntimeSettings in the form of a string.
-
-```typescript
-outputRuntimeSettingsToString(): Promise
-```
-
-### Return Value
-
-A promise resolving to a string which represents the current RuntimeSettings.
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-### Parameters
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-
-### Return Value
-
-A promise resolving to a string which represents the value of the argument.
-
-### Code Snippet
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-### Parameters
-
-`modeName`: specifies the mode which contains one or multiple elements.
-`index`: specifies an element of the mode by its index.
-`argumentName`: specifies the argument.
-`argumentValue`: specifies the value.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-## ifSaveOriginalImageInACanvas
-
-Whether to save the original image into a <canvas> element. The original image refers to the actual image the library tried to read barcodes from.
-
-Note that the result is an `HTMLCanvasElement` element and you can insert it into the DOM to show the image.
-
-```typescript
-ifSaveOriginalImageInACanvas: boolean;
-```
-
-**Default value**
-
-`false`
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-## getOriginalImageInACanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-getOriginalImageInACanvas(): HTMLCanvasElement
-```
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-### See Also
-
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-
-## setImageSource
-
-Sets an image source for continous scanning.
-
-```typescript
-setImageSource(imageSource: ImageSource): void;
-```
-
-### Arguments
-
-`imageSource` : Specifies the image source.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-await enhancer.setUIElement(Dynamsoft.DBR.BarcodeReader.defaultUIElementURL);
-reader.setImageSource(enhancer);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-## onUniqueRead
-
-This event is triggered when a new, unduplicated label is found.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-### Arguments
-
-`txt` : a string that holds the label text (one single line).
-
-`result` : a `TextResult` object that contains more detailed info about the returned text.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-await enhancer.setUIElement(Dynamsoft.DBR.BarcodeReader.defaultUIElementURL);
-reader.setImageSource(enhancer);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## onImageRead
-
-This event is triggered after the library finishes scanning a image.
-
-```typescript
-onImageRead: (results: TextResult[]) => void
-```
-
-### Arguments
-
-`results` : `TextResult` objects that contain all the label results in this image.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-await enhancer.setUIElement(Dynamsoft.DBR.BarcodeReader.defaultUIElementURL);
-reader.setImageSource(enhancer);
-reader.onImageRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## startScanning
-
-Open the camera and starts continuous scanning of incoming images.
-
-```typescript
-startScanning(appendOrShowUI?: boolean): Promise;
-```
-
-### Parameters
-
-`appendOrShowUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree, the CameraEnhancer instance will append it in the DOM and show it; if the UI already exists in the DOM tree but is hidden, it'll be displayed. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-### Return Value
-
-A promise resolving to a `PlayCallbackInfo` object which contains the resolution of the video.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-await enhancer.setUIElement(Dynamsoft.DBR.BarcodeReader.defaultUIElementURL);
-reader.setImageSource(enhancer);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## pauseScanning
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScanning(): void;
-```
-
-## resumeScanning
-
-Resumes continuous scanning.
-
-```typescript
-resumeScanning(): void;
-```
-
-## stopScanning
-
-Stops continuous scanning and closes the video stream.
-
-```typescript
-stopScanning(hideUI?: boolean): void;
-```
-
-### Parameters
-
-`hideUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree or it exists but is hidden, nothing is done; if the UI already exists in the DOM tree and is shown, it'll be hidden. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing happens; if it exists in the DOM tree, it may or may not be hidden depending on its original state.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-await enhancer.setUIElement(Dynamsoft.DBR.BarcodeReader.defaultUIElementURL);
-reader.setImageSource(enhancer);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
- reader.stopScanning(true);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `ScanSettings` .
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v9.2.12.md b/programming-old/javascript/api-reference/BarcodeReader-v9.2.12.md
deleted file mode 100644
index b6861a63..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v9.2.12.md
+++ /dev/null
@@ -1,725 +0,0 @@
----
-layout: default-layout
-title: v9.2.12 BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK v 9.2.12.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v9.2.12.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroyContext()](#destroycontext) | Destroies the BarcodeReader instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode()](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String()](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl()](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer()](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Decode Barcodes on multiple images from an Image Source
-
-| API Name | Description |
-|---|---|
-| [setImageSource](#setimagesource) | Sets an image source for continous scanning. |
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onImageRead](#onimageread) | This event is triggered after the library finishes scanning an image. |
-| [startScanning()](#startscanning) | Starts continuous scanning of incoming images. |
-| [stopScanning()](#stopscanning) | Stops continuous scanning. |
-| [pauseScanning()](#pausescanning) | Pauses continuous scanning but keep the video stream. |
-| [resumeScanning()](#resumescanning) | Resumes continuous scanning. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](#getruntimesettings) | Returns the current runtime settings. |
-| [initRuntimeSettingsWithString](#initruntimesettingswithstring) | Initializes the Runtime Settings with the settings in the given JSON string. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Resets all parameters to default values. |
-| [outputRuntimeSettingsToString()](#outputruntimesettingstostring) | Returns the current RuntimeSettings in the form of a string. |
-| [getModeArgument()](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](#ifsaveoriginalimageinacanvas) | Whether to save the original image into a < canvas> element. |
-| [getOriginalImageInACanvas()](#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-### Return Value
-
-A promise resolving to the created `BarcodeReader` object.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-## destroyContext
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | DCEFrame | DSImage | string): Promise
-```
-
-> If the content in the binary data is raw img data, such as `RGBA` , use [decodeBuffer()](#decodebuffer) instead.
-
-### Parameters
-
-`source` : specifies the image to decode. The supported image formats include `png` , `jpeg` , `bmp` , `gif` and a few others (some browsers support `webp` , `tif` ). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-> To speed up the reading, the image will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try {
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-} catch (ex) {
- // If there is no frame in the video, throw an exception.
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-* [DSImage](./interface/dsimage.md)
-* [DCEFrame](https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/api-reference/interface/dceframe.html?ver=latest)
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-### Parameters
-
-`base64Str` : specifies the image represented by a string.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL. Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-### Parameters
-
-`url` : specifies the image by its URL.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeBuffer
-
-Decodes barcodes from raw image data. It is an advanced API, if you don't know what you are doing, use [decode](#decode) instead.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat): Promise
-```
-
-### Parameters
-
-`buffer` : specifies the raw image represented by a `Uint8Array` , `Uint8ClampedArray` , `ArrayBuffer` , `Blob` or `Buffer` object.
-
-`width` : image width.
-
-`height` : image height.
-
-`stride` : `image-width * pixel-byte-length` .
-
-`format` : pixel format.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBuffer(u8RawImage, 1280, 720, 1280 * 4, Dynamsoft.DBR.EnumImagePixelFormat.IPF_ABGR_8888);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-### Code Snippet
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## initRuntimeSettingsWithString
-
-Initializes the Runtime Settings with the settings in the given JSON string.
-
-```typescript
-initRuntimeSettingsWithString(template: string): Promise
-```
-
-### Parameters
-
-`template` : a string representing the template.
-
-### Return Value
-
-A promise resolving to `void`.
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings
-
-* `speed`: fast but may miss a few codes;
-* `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-* `balance`: between `speed` and `coverage`;
-* `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance;
-* `dense`: optimized for scanning dense barcodes such as the PDF417 on driver's license;
-* `distance`: optimized for scanning a barcode that is placed far from the device and appear small in the video stream.
-
-> NOTE
->
-> If the settings `barcodeFormatIds` , `barcodeFormatIds_2` and `region` have been changed by the customer, changing the template will preserve the previous settings.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-### Parameters
-
-`settings` : a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [ `BarcodeScanner` ](./BarcodeScanner.md) instance, it is equivalent to setting the `speed` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-### Parameters
-
-None.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-## outputRuntimeSettingsToString
-
-Return the current RuntimeSettings in the form of a string.
-
-```typescript
-outputRuntimeSettingsToString(): Promise
-```
-
-### Return Value
-
-A promise resolving to a string which represents the current RuntimeSettings.
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-### Return Value
-
-A promise resolving to a string which represents the value of the argument.
-
-### Code Snippet
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-`argumentValue` : specifies the value.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-## ifSaveOriginalImageInACanvas
-
-Whether to save the original image into a < canvas> element. The original image refers to the actual image the library tried to read barcodes from.
-
-Note that the result is an `HTMLCanvasElement` element and you can insert it into the DOM to show the image.
-
-```typescript
-ifSaveOriginalImageInACanvas: boolean;
-```
-
-**Default value**
-
- `false`
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-## getOriginalImageInACanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-getOriginalImageInACanvas(): HTMLCanvasElement
-```
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-### See Also
-
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-
-## setImageSource
-
-Sets an image source for continous scanning.
-
-```typescript
-setImageSource(imageSource: ImageSource, options?: object): Promise;
-```
-
-### Parameters
-
-`imageSource` : Specifies the image source.
-
-`options` : Options to help with the usage of the `ImageSource` object. At present, it only contains one property `resultsHighlightBaseShapes` that accepts `Dynamsoft.DCE.DrawingItem` as its value to help with the highlighting of barcode regions as shown in the code snippet below. More properties will be added as needed in the future.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-## onUniqueRead
-
-This event is triggered when a new, unduplicated label is found.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-### Arguments
-
-`txt` : a string that holds the label text (one single line).
-
-`result` : a `TextResult` object that contains more detailed info about the returned text.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## onImageRead
-
-This event is triggered after the library finishes scanning a image.
-
-```typescript
-onImageRead: (results: TextResult[]) => void
-```
-
-### Arguments
-
-`results` : `TextResult` objects that contain all the label results in this image.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## startScanning
-
-Open the camera and starts continuous scanning of incoming images.
-
-```typescript
-startScanning(appendOrShowUI?: boolean): Promise;
-```
-
-### Parameters
-
-`appendOrShowUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree, the CameraEnhancer instance will append it in the DOM and show it; if the UI already exists in the DOM tree but is hidden, it'll be displayed. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-### Return Value
-
-A promise resolving to a `PlayCallbackInfo` object which contains the resolution of the video.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## pauseScanning
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScanning(options?: object): void;
-```
-
-**Parameters**
-
-`options`: Options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-## resumeScanning
-
-Resumes continuous scanning.
-
-```typescript
-resumeScanning(): void;
-```
-
-## stopScanning
-
-Stops continuous scanning and closes the video stream.
-
-```typescript
-stopScanning(hideUI?: boolean): void;
-```
-
-### Parameters
-
-`hideUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree or it exists but is hidden, nothing is done; if the UI already exists in the DOM tree and is shown, it'll be hidden. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing happens; if it exists in the DOM tree, it may or may not be hidden depending on its original state.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `ScanSettings` .
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
diff --git a/programming-old/javascript/api-reference/BarcodeReader-v9.6.2.md b/programming-old/javascript/api-reference/BarcodeReader-v9.6.2.md
deleted file mode 100644
index 82d91e65..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader-v9.6.2.md
+++ /dev/null
@@ -1,730 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK v 9.6.2.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader-v9.6.2.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroyContext()](#destroycontext) | Destroies the BarcodeReader instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode()](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String()](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl()](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer()](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Decode Barcodes on multiple images from an Image Source
-
-| API Name | Description |
-|---|---|
-| [setImageSource](#setimagesource) | Sets an image source for continous scanning. |
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onImageRead](#onimageread) | This event is triggered after the library finishes scanning an image. |
-| [startScanning()](#startscanning) | Starts continuous scanning of incoming images. |
-| [stopScanning()](#stopscanning) | Stops continuous scanning. |
-| [pauseScanning()](#pausescanning) | Pauses continuous scanning but keep the video stream. |
-| [resumeScanning()](#resumescanning) | Resumes continuous scanning. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](#getruntimesettings) | Returns the current runtime settings. |
-| [initRuntimeSettingsWithString](#initruntimesettingswithstring) | Initializes the Runtime Settings with the settings in the given JSON string. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Resets all parameters to default values. |
-| [outputRuntimeSettingsToString()](#outputruntimesettingstostring) | Returns the current RuntimeSettings in the form of a string. |
-| [getModeArgument()](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](#ifsaveoriginalimageinacanvas) | Whether to save the original image into a < canvas> element. |
-| [getOriginalImageInACanvas()](#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-### Return Value
-
-A promise resolving to the created `BarcodeReader` object.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-## destroyContext
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | DCEFrame | DSImage | string): Promise
-```
-
-> If the content in the binary data is raw img data, such as `RGBA` , use [decodeBuffer()](#decodebuffer) instead.
-
-### Parameters
-
-`source` : specifies the image to decode. The supported image formats include `png` , `jpeg` , `bmp` , `gif` and a few others (some browsers support `webp` , `tif` ). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-> To speed up the reading, the image will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try {
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-} catch (ex) {
- // If there is no frame in the video, throw an exception.
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-* [DSImage](./interface/dsimage.md)
-* [DCEFrame](https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/api-reference/interface/dceframe.html?ver=latest)
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-### Parameters
-
-`base64Str` : specifies the image represented by a string.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL. Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-### Parameters
-
-`url` : specifies the image by its URL.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeBuffer
-
-Decodes barcodes from raw image data. It is an advanced API, if you don't know what you are doing, use [decode](#decode) instead.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat): Promise
-```
-
-### Parameters
-
-`buffer` : specifies the raw image represented by a `Uint8Array` , `Uint8ClampedArray` , `ArrayBuffer` , `Blob` or `Buffer` object.
-
-`width` : image width.
-
-`height` : image height.
-
-`stride` : `image-width * pixel-byte-length` .
-
-`format` : pixel format.
-
-### Return Value
-
-A promise resolving to a `TextResult[]` object that contains all the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBuffer(u8RawImage, 1280, 720, 1280 * 4, Dynamsoft.DBR.EnumImagePixelFormat.IPF_ABGR_8888);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-### Code Snippet
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## initRuntimeSettingsWithString
-
-Initializes the Runtime Settings with the settings in the given JSON string.
-
-```typescript
-initRuntimeSettingsWithString(template: string): Promise
-```
-
-### Parameters
-
-`template` : a string representing the template.
-
-### Return Value
-
-A promise resolving to `void`.
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings
-
-* `speed`: fast but may miss a few codes;
-* `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-* `balance`: between `speed` and `coverage`;
-* `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance;
-* `dense`: optimized for scanning dense barcodes such as the PDF417 on driver's license;
-* `distance`: optimized for scanning a barcode that is placed far from the device and appear small in the video stream.
-
-> NOTE
->
-> If the settings `barcodeFormatIds` , `barcodeFormatIds_2` and `region` have been changed by the customer, changing the template will preserve the previous settings.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-### Parameters
-
-`settings` : a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [ `BarcodeScanner` ](./BarcodeScanner.md) instance, it is equivalent to setting the `single` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-### Parameters
-
-None.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-## outputRuntimeSettingsToString
-
-Return the current RuntimeSettings in the form of a string.
-
-```typescript
-outputRuntimeSettingsToString(): Promise
-```
-
-### Return Value
-
-A promise resolving to a string which represents the current RuntimeSettings.
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-### Return Value
-
-A promise resolving to a string which represents the value of the argument.
-
-### Code Snippet
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-`argumentValue` : specifies the value.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-## ifSaveOriginalImageInACanvas
-
-Whether to save the original image into a < canvas> element. The original image refers to the actual image the library tried to read barcodes from.
-
-Note that the result is an `HTMLCanvasElement` element and you can insert it into the DOM to show the image.
-
-```typescript
-ifSaveOriginalImageInACanvas: boolean;
-```
-
-**Default value**
-
- `false`
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-## getOriginalImageInACanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-getOriginalImageInACanvas(): HTMLCanvasElement
-```
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-### See Also
-
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-
-## setImageSource
-
-Sets an image source for continous scanning.
-
-```typescript
-setImageSource: (imageSource: ImageSource, options?: object)=>Promise;
-```
-
-### Parameters
-
-`imageSource` : Specifies the image source.
-
-`options` : Options to help with the usage of the `ImageSource` object. At present, it only contains one property `resultsHighlightBaseShapes` that accepts `Dynamsoft.DCE.DrawingItem` as its value to help with the highlighting of barcode regions as shown in the code snippet below. More properties will be added as needed in the future.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-## onUniqueRead
-
-This event is triggered when a new, unduplicated label is found.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-### Arguments
-
-`txt` : a string that holds the label text (one single line).
-
-`result` : a `TextResult` object that contains more detailed info about the returned text.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## onImageRead
-
-This event is triggered after the library finishes scanning a image.
-
-```typescript
-onImageRead: (results: TextResult[]) => void
-```
-
-### Arguments
-
-`results` : `TextResult` objects that contain all the label results in this image.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onImageRead = (results) => {
- if (results.length > 0) {
- results.forEach(result => {
- console.log(result.barcodeText);
- });
- }
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## startScanning
-
-Open the camera and starts continuous scanning of incoming images.
-
-```typescript
-startScanning(appendOrShowUI?: boolean): Promise;
-```
-
-### Parameters
-
-`appendOrShowUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree, the CameraEnhancer instance will append it in the DOM and show it; if the UI already exists in the DOM tree but is hidden, it'll be displayed. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-### Return Value
-
-A promise resolving to a `PlayCallbackInfo` object which contains the resolution of the video.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## pauseScanning
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScanning(options?: object): void;
-```
-
-**Parameters**
-
-`options`: Options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-## resumeScanning
-
-Resumes continuous scanning.
-
-```typescript
-resumeScanning(): void;
-```
-
-## stopScanning
-
-Stops continuous scanning and closes the video stream.
-
-```typescript
-stopScanning(hideUI?: boolean): void;
-```
-
-### Parameters
-
-`hideUI` : this parameter specifies how to handle the UI that comes with the bound CameraEnhancer instance. When set to true, if the UI doesn't exist in the DOM tree or it exists but is hidden, nothing is done; if the UI already exists in the DOM tree and is shown, it'll be hidden. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing happens; if it exists in the DOM tree, it may or may not be hidden depending on its original state.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
- reader.stopScanning(true);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `ScanSettings` .
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
diff --git a/programming-old/javascript/api-reference/BarcodeReader.md b/programming-old/javascript/api-reference/BarcodeReader.md
deleted file mode 100644
index 9e978b41..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader.md
+++ /dev/null
@@ -1,796 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeReader Class of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader.html
----
-
-# BarcodeReader for Images
-
-A low-level barcode reader that processes still images and return barcode results. The following code snippet shows its basic usage.
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let results = await reader.decode(imageSource);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeReader` instance. |
-| [destroyContext()](#destroycontext) | Destroies the BarcodeReader instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [decode()](#decode) | Decodes barcodes from an image. |
-| [decodeBase64String()](#decodebase64string) | Decodes barcodes from a base64-encoded image (with or without MIME). |
-| [decodeUrl()](#decodeurl) | Decodes barcodes from an image specified by its URL. |
-| [decodeBuffer()](#decodebuffer) | Decodes barcodes from raw image data. |
-
-### Decode Barcodes on multiple images from an Image Source
-
-| API Name | Description |
-|---|---|
-| [setImageSource()](#setimagesource) | Sets an image source for continous scanning. |
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onImageRead](#onimageread) | This event is triggered after the library finishes scanning an image. |
-| [startScanning()](#startscanning) | Starts continuous scanning of incoming images. |
-| [stopScanning()](#stopscanning) | Stops continuous scanning. |
-| [pauseScanning()](#pausescanning) | Pauses continuous scanning but keep the video stream. |
-| [resumeScanning()](#resumescanning) | Resumes continuous scanning. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](#getruntimesettings) | Returns the current runtime settings. |
-| [initRuntimeSettingsWithString()](#initruntimesettingswithstring) | Initializes the Runtime Settings with the settings in the given JSON string. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Resets all parameters to default values. |
-| [outputRuntimeSettingsToString()](#outputruntimesettingstostring) | Returns the current RuntimeSettings in the form of a string. |
-| [getModeArgument()](#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](#ifsaveoriginalimageinacanvas) | Whether to save the original image into a < canvas> element. |
-| [getOriginalImageInACanvas()](#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeReader` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-### Return Value
-
-A promise resolving to the created `BarcodeReader` object.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-```
-
-### See Also
-
-* [destroyContext](#destroyContext)
-
-## destroyContext
-
-Destroies the `BarcodeReader` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-// ... decode ...
-reader.destroyContext();
-```
-
-### See Also
-
-* [isContextDestroyed](#isContextDestroyed)
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-### See Also
-
-* [destroyContext](#destroyContext)
-
-## decode
-
-Decodes barcodes from an image.
-
-```typescript
-decode(source: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | DCEFrame | DSImage | string): Promise
-```
-
-> If the content in the binary data is raw img data, such as `RGBA` , use [decodeBuffer()](#decodebuffer) instead.
-
-### Parameters
-
-`source` : specifies the image to decode. The supported image formats include `png` , `jpeg` , `bmp` , `gif` and a few others (some browsers support `webp` , `tif` ). Also note that the image can be specified in a lot of ways including binary data, base64 string (with MIME), URL, etc.
-
-> To speed up the reading, the image will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-### Return Value
-
-A promise resolving to an array of `TextResult` object that contains the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results1 = await reader.decode(blob);
-let results2 = await reader.decode(htmlImageElement);
-let results3 = await reader.decode(url);
-let results4 = await reader.decode(strBase64WithMime); // like `data:image/png;base64,iV************`
-```
-
-You can even use an `HTMLVideoElement` as the source. If the video is playing, the current frame will be decoded.
-
-```js
-let results;
-try {
- // The current frame will be decoded.
- results = await reader.decode(htmlVideoElement);
-} catch (ex) {
- // If there is no frame in the video, throw an exception.
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [HTMLImageElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-* [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
-* [TextResult](./interface/TextResult.md)
-* [DSImage](./interface/dsimage.md)
-* [DCEFrame](https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/api-reference/interface/dceframe.html?ver=latest)
-
-## decodeBase64String
-
-Decodes barcodes from a base64-encoded image (with or without MIME).
-
-```typescript
-decodeBase64String(base64Str: string): Promise
-```
-
-### Parameters
-
-`base64Str` : specifies the image represented by a string.
-
-### Return Value
-
-A promise resolving to an array of `TextResult` object that contains the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBase64String(strBase64); //e.g. `data:image/jpg;base64,Xfjshekk....` or `Xfjshekk...`.
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeUrl
-
-Decodes barcodes from an image specified by its URL.
-
-Note that the image should either be from the same domain or has the 'Access-Control-Allow-Origin' header set to allow access from your current domain.
-
-```typescript
-decodeUrl(url: string): Promise
-```
-
-### Parameters
-
-`url` : specifies the image by its URL.
-
-### Return Value
-
-A promise resolving to an array of `TextResult` object that contains the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeUrl("https://www.yourdomain.com/imageWithBarcodes.png");
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-
-## decodeBuffer
-
-Decodes barcodes from raw image data. It is an advanced API, if you don't know what you are doing, use [decode](#decode) instead.
-
-```typescript
-decodeBuffer(buffer: Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray, width: number, height: number, stride: number, format: EnumImagePixelFormat, orientation?: number): Promise
-```
-
-### Parameters
-
-`buffer` : specifies the raw image represented by a `Uint8Array` , `Uint8ClampedArray` , `ArrayBuffer` , `Blob` or `Buffer` object.
-
-`width` : image width.
-
-`height` : image height.
-
-`stride` : `image-width * pixel-byte-length` .
-
-`format` : pixel format.
-
-`orientation`: specifies the oritation of the image data.
-
-### Return Value
-
-A promise resolving to an array of `TextResult` object that contains the barcode results found in this image.
-
-### Code Snippet
-
-```js
-let results = await reader.decodeBuffer(u8RawImage, 1280, 720, 1280 * 4, Dynamsoft.DBR.EnumImagePixelFormat.IPF_ABGR_8888);
-for (let result of results) {
- console.log(result.barcodeText);
-}
-```
-
-### See Also
-
-* [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
-* [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
-* [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)
-* [Uint8ClampedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray)
-* [EnumImagePixelFormat](./enum/EnumImagePixelFormat.md)
-* [TextResult](./interface/TextResult.md)
-
-## getRuntimeSettings
-
-Returns the current runtime settings.
-
-```typescript
-getRuntimeSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `RuntimeSettings` object that contains the settings for barcode reading.
-
-### Code Snippet
-
-```js
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; // Decodes only QR code.
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-* [updateRuntimeSettings](#updateRuntimeSettings)
-* [resetRuntimeSettings](#resetRuntimeSettings)
-
-## initRuntimeSettingsWithString
-
-Initializes the `RuntimeSettings` with the settings in the given JSON string.
-
-```typescript
-initRuntimeSettingsWithString(template: string): Promise
-```
-
-### Parameters
-
-`template` : a string representing the template.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-* [updateRuntimeSettings](#updateRuntimeSettings)
-
-## updateRuntimeSettings
-
-Updates runtime settings with a given struct or a preset template represented by one of the following strings:
-
-* `speed`: fast but may miss a few codes;
-* `coverage`: slow but try to find all codes, this is the default setting for a `BarcodeReader` instance;
-* `balance`: between `speed` and `coverage`;
-* `single`: optimized for scanning one single barcode from a video input, this is supported only by the sub-class [BarcodeScanner](./BarcodeScanner.md) and is also the default setting for a `BarcodeScanner` instance;
-* `dense`: optimized for scanning dense barcodes such as the PDF417 on driver's license;
-* `distance`: optimized for scanning a barcode that is placed far from the device and appear small in the video stream.
-
-> NOTE
->
-> If the settings `barcodeFormatIds` , `barcodeFormatIds_2` and `region` have been changed by the customer, changing the template will preserve the previous settings.
-
-```typescript
-updateRuntimeSettings(settings: RuntimeSettings | string): Promise
-```
-
-### Parameters
-
-`settings` : a `RuntimeSettings` object that contains the new settings for barcode reading.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-* [getRuntimeSettings](#getRuntimeSettings)
-* [resetRuntimeSettings](#resetRuntimeSettings)
-
-## resetRuntimeSettings
-
-Resets all parameters to default values.
-
-For a `BarcodeReader` instance, it is equivalent to setting the `coverage` template.
-
-For a [ `BarcodeScanner` ](./BarcodeScanner.md) instance, it is equivalent to setting the `single` template.
-
-```typescript
-resetRuntimeSettings(): Promise
-```
-
-### Parameters
-
-None.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.resetRuntimeSettings();
-```
-
-## outputRuntimeSettingsToString
-
-Return the current `RuntimeSettings` in the form of a string.
-
-```typescript
-outputRuntimeSettingsToString(): Promise
-```
-
-### Return Value
-
-A promise resolving to a string which represents the current `RuntimeSettings`.
-
-### See Also
-
-* [RuntimeSettings](./interface/RuntimeSettings.md)
-* [getRuntimeSettings](#getRuntimeSettings)
-
-## getModeArgument
-
-Returns the argument value for the specified mode parameter.
-
-```typescript
-getModeArgument(modeName: string, index: number, argumentName: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-### Return Value
-
-A promise resolving to a string which represents the value of the argument.
-
-### Code Snippet
-
-```js
-let argumentValue = await reader.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-```
-
-### See Also
-
-* [setModeArgument](#setModeArgument)
-
-## setModeArgument
-
-Sets the argument value for the specified mode parameter.
-
-```typescript
-setModeArgument(modeName: string, index: number, argumentName: string, argumentValue: string): Promise
-```
-
-### Parameters
-
-`modeName` : specifies the mode which contains one or multiple elements.
-
-`index` : specifies an element of the mode by its index.
-
-`argumentName` : specifies the argument.
-
-`argumentValue` : specifies the value.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-### See Also
-
-* [getModeArgument](#getModeArgument)
-
-## ifSaveOriginalImageInACanvas
-
-Whether to save the original image into a <canvas> element. The original image refers to the actual image the library tried to read barcodes from. It can be returned by 'getOriginalImageInACanvas()'.
-
-```typescript
-ifSaveOriginalImageInACanvas: boolean;
-```
-
-**Default value**
-
-`false`
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-### See Also
-
-* [getOriginalImageInACanvas](#getoriginalimageinacanvas)
-
-## getOriginalImageInACanvas
-
-An [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) that holds the original image. The original image refers to the actual image the library tried to read barcodes from.
-
-```typescript
-getOriginalImageInACanvas(): HTMLCanvasElement
-```
-
-### Code Snippet
-
-```js
-reader.ifSaveOriginalImageInACanvas = true;
-let results = await reader.decode(source);
-document.body.append(reader.getOriginalImageInACanvas());
-```
-
-### See Also
-
-* [ifSaveOriginalImageInACanvas](#ifSaveOriginalImageInACanvas)
-* [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
-
-## setImageSource
-
-Sets an image source for continous scanning.
-
-```typescript
-setImageSource: (imageSource: ImageSource, options?: object)=>Promise;
-```
-
-### Parameters
-
-`imageSource` : Specifies the image source.
-
-`options` : Options to help with the usage of the `ImageSource` object. At present, it only contains one property `resultsHighlightBaseShapes` that accepts `Dynamsoft.DCE.DrawingItem` as its value to help with the highlighting of barcode regions as shown in the code snippet below. More properties will be added as needed in the future.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-};
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [ImageSource](interface/imagesource.md)
-
-## onUniqueRead
-
-This event is triggered when a new, unduplicated label is found.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-### Arguments
-
-`txt` : a string that holds the label text (one single line).
-
-`result` : a `TextResult` object that contains more detailed info about the returned text.
-
-### Code Snippet
-
-```javascript
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-* [onImageRead](#onImageRead)
-
-## onImageRead
-
-This event is triggered after the library finishes scanning a image.
-
-```typescript
-onImageRead: (results: TextResult[]) => void
-```
-
-### Arguments
-
-`results` : an array of `TextResult` object that contains the barcode results in this image.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onImageRead = (results) => {
- if (results.length > 0) {
- results.forEach(result => {
- console.log(result.barcodeText);
- });
- }
-};
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [TextResult](./interface/TextResult.md)
-* [onUniqueRead](#onUniqueRead)
-
-## startScanning
-
-Open the camera and starts continuous scanning of incoming images.
-
-```typescript
-startScanning(appendOrShowUI?: boolean): Promise;
-```
-
-### Parameters
-
-`appendOrShowUI` : this parameter specifies how to handle the UI that comes with the bound `CameraEnhancer` instance. When set to true, if the UI doesn't exist in the DOM tree, the `CameraEnhancer` instance will append it in the DOM and show it; if the UI already exists in the DOM tree but is hidden, it'll be displayed. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-### Return Value
-
-A promise resolving to a `ScannerPlayCallbackInfo` object which contains the resolution of the video.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-* [stopScanning](#stopScanning)
-* [pauseScanning](#pauseScanning)
-* [resumeScannig](#resumeScannig)
-
-## pauseScanning
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScanning(options?: object): void;
-```
-
-### Parameters
-
-`options`: options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-### See Also
-
-* [resumeScanning](#resumeScanning)
-
-## resumeScanning
-
-Resumes continuous scanning.
-
-```typescript
-resumeScanning(): void;
-```
-
-### See Also
-
-* [pauseScanning](#pauseScanning)
-
-## stopScanning
-
-Stops continuous scanning and closes the video stream.
-
-```typescript
-stopScanning(hideUI?: boolean): void;
-```
-
-### Parameters
-
-`hideUI` : this parameter specifies how to handle the UI that comes with the bound `CameraEnhancer` instance. When set to true, if the UI doesn't exist in the DOM tree or it exists but is hidden, nothing is done; if the UI already exists in the DOM tree and is shown, it'll be hidden. When not set or set to false, it means not to change the original state of that UI: if it doesn't exist in the DOM tree, nothing happens; if it exists in the DOM tree, it may or may not be hidden depending on its original state.
-
-### Code Snippet
-
-```js
-let reader = await Dynamsoft.DBR.BarcodeReader.createInstance();
-let enhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance();
-let options = {
- resultsHighlightBaseShapes: Dynamsoft.DCE.DrawingItem
-};
-await reader.setImageSource(enhancer, options);
-reader.onUniqueRead = (txt, result) => {
- console.log(txt);
- reader.stopScanning(true);
-}
-await reader.startScanning(true);
-```
-
-### See Also
-
-* [startScanning](#startScanning)
-* [pauseScanning](#pauseScanning)
-* [resumeScannig](#resumeScannig)
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-### Return Value
-
-A promise resolving to a `ScanSettings` .
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
-* [updateScanSettings](#updateScanSettings)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-### Parameters
-
-`settings` : specifies the new scan settings.
-
-### Return Value
-
-A promise that resolves when the operation succeeds.
-
-### Code Snippet
-
-```js
-let scanSettings = await reader.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await reader.updateScanSettings(scanSettings);
-```
-
-### See Also
-
-* [ScanSettings](./interface/ScanSettings.md)
-* [getScanSettings](#getScanSettings)
\ No newline at end of file
diff --git a/programming-old/javascript/api-reference/BarcodeReader/accessors.md b/programming-old/javascript/api-reference/BarcodeReader/accessors.md
deleted file mode 100644
index 452c7e86..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/accessors.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Accessors - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Accessors of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: engineResourcePath, productKeys, version, accessors, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/accessors.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Accessors
-
-| Accessors | Description |
-|----------------------|-------------|
-| [engineResourcePath](#engineresourcepath) | Get or set the engine (WASM) location. |
-| [productKeys](#productkeys) | Get or set the Dynamsoft Barcode Reader SDK product keys. |
-| [version](#version) | Get current version. |
-
----
-
-## engineResourcePath
-
-Get or set the Barcode Reader SDK engine path. The path should lead to a folder containing the distributed JS and WASM files.
-
-```javascript
-engineResourcePath = value
-```
-
-#### Property Value
-
-`value` *string*
-
-#### Sample
-
-```javascript
-Dynamsoft.BarcodeReader.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@7.4.0-v1/dist/";
-
-await Dynamsoft.BarcodeReader.loadWasm();
-```
-
-## productKeys
-
-Get or set the Barcode Reader SDK product key. Please visit our [user portal](https://www.dynamsoft.com/customer/license/trialLicense?utm_source=guide&product=dbr&package=js) to obtain a trial license.
-
-### get
-
-```javascript
-productKeys = keys
-```
-
-#### Property Value
-
-`keys` *string*
-
-#### Sample
-
-```javascript
-
-```
-
-## version
-
-Get the currently used version of Barcode Reader SDK.
-
-```javascript
-version returns string
-```
-
-#### Return Value
-
-`string`
diff --git a/programming-old/javascript/api-reference/BarcodeReader/index.md b/programming-old/javascript/api-reference/BarcodeReader/index.md
deleted file mode 100644
index 29fa83d9..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/index.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Index Page - Dynamsoft Barcode Reader JavaScript Edition API
-description: Get started with barcode reading from images using this API reference guide containing an index for essential barcode reading functionality in Javascript.
-keywords: BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: false
-breadcrumbText: BarcodeReader
-permalink: /programming/javascript/api-reference/BarcodeReader/index.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Dynamsoft Barcode Reader SDK - Javascript BarcodeReader Class
-
-The `BarcodeReader` class is used for **image** decoding.
-
-## `BarcodeReader` Methods
-
-### Initialize and Destroy
-
-The following methods are related to initializing and destroying the `BarcodeReader` object.
-
-| Method | Description |
-|----------------------|-------------|
-| [createInstance()](methods/initialize-and-destroy.md#createinstance) | Create a `BarcodeReader` object. |
-| [destroy()](methods/initialize-and-destroy.md#destroy) | Destroy the `BarcodeReader` object. |
-| [detectEnvironment()](methods/initialize-and-destroy.md#detectenvironment) | Detect the current environment. |
-| [isLoaded()](methods/initialize-and-destroy.md#isloaded) | Check if the decoding module is loaded. |
-| [loadWasm()](methods/initialize-and-destroy.md#loadwasm) | Manually load and compile the decoding WASM module. |
-
-### Decode
-
-The following methods are related to decoding barcodes.
-
-| Method | Description |
-|----------------------|-------------|
-| [decode()](methods/decode.md#decode) | Decode barcodes from images, binary data, URLs, and more. |
-| [decodeBase64String()](methods/decode.md#decodebase64string) | Decode barcodes from a base64 encoded string. |
-| [decodeBuffer()](methods/decode.md#decodebuffer) | Decode barcodes from raw buffer. |
-| [decodeUrl()](methods/decode.md#decodeurl) | Decode barcodes from a URL. |
-
-### Parameter and Runtime Settings
-
-The following methods are related to customizing mode and runtime settings.
-
-| Method | Description |
-|----------------------|-------------|
-| [getModeArgument()](methods/parameter-and-runtime-settings.md#getmodeargument) | Get argument value for the specified mode parameter. |
-| [setModeArgument()](methods/parameter-and-runtime-settings.md#setmodeargument) | Set argument value for the specified mode parameter. |
-| [getRuntimeSettings()](methods/parameter-and-runtime-settings.md#getruntimesettings) | Get current runtime settings. |
-| [resetRuntimeSettings()](methods/parameter-and-runtime-settings.md#resetruntimesettings) | Reset runtime settings to default. |
-| [updateRuntimeSettings()](methods/parameter-and-runtime-settings.md#updateruntimesettings) | Modify and update the current runtime settings. |
-
-## `BarcodeReader` Properties
-
-| Property | Description |
-|----------------------|-------------|
-| [_bUseFullFeature](properties.md#_busefullfeature) | If set to `false`, use the compact-featured WASM module. |
-| `bDestroyed` | Indicates whether a `BarcodeScanner` object has been destroyed. |
-| `bSaveOriCanvas` | If set to `true`, save the original image to canvas. |
-| `oriCanvas` | The original canvas element. |
-
-
-## `BarcodeReader` Accessors
-
-| Accessors | Description |
-|----------------------|-------------|
-| [engineResourcePath](accessors.md#engineresourcepath) | Get or set the engine (WASM) location. |
-| [productKeys](accessors.md#productkeys) | Get or set the Dynamsoft Barcode Reader SDK product keys. |
-| [version](accessors.md#version) | Get current version. |
-
diff --git a/programming-old/javascript/api-reference/BarcodeReader/methods/decode.md b/programming-old/javascript/api-reference/BarcodeReader/methods/decode.md
deleted file mode 100644
index 68643abd..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/methods/decode.md
+++ /dev/null
@@ -1,111 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Decode Methods - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Decode methods of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: decode, decodeBase64String, decodeBuffer, decodeUrl, decode methods, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/methods/decode.html
----
-
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Decode Methods
-
-| Method | Description |
-|----------------------|-------------|
-| [decode()](#decode) | Decode barcodes from images, binary data, URLs, and more. |
-| [decodeBase64String()](#decodebase64string) | Decode barcodes from a base64 encoded string. |
-| [decodeBuffer()](#decodebuffer) | Decode barcodes from raw buffer. |
-| [decodeUrl()](#decodeurl) | Decode barcodes from a URL. |
-
----
-
-## decode
-
-Decode barcodes from various sources, including binary data, images, base64 (with MIME type), URLs, etc.
-
-```javascript
-decode(source) returns Promise
-```
-
-### Parameters
-
-`source` *Blob | Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | string*
-
-### Return Value
-
-Promise<[TextResult[]](../../global-interfaces.md#textresult)>
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## decodeBase64String
-
-Decode barcodes from a base64 string with or without MIME type. For example, with MIME type specified: `data:image/jpg;base64,Xfjshekk...` and without: `Xfjshekk....`
-
-```javascript
-decodeBase64String(base64) returns Promise
-```
-
-### Parameters
-
-`base64` *string*
-
-### Return Value
-
-Promise<[TextResult[]](../../global-interfaces.md#textresult)>
-
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## decodeBuffer
-
-Decode barcodes from raw buffer.
-
-```javascript
-decodeBuffer(buffer, width, height, stride, format, config) returns Promise
-```
-
-### Parameters
-
-`buffer` *Uint8Array | Uint8ClampedArray | ArrayBuffer | Blob | Buffer*
-`width` *number*
-`height` *number*
-`stride` *number*
-`format` *[EnumImagePixelFormat]({{ site.enumerations }}other-enums.html#imagepixelformat)*
-`config`optional *any*
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## decodeUrl
-
-Decode barcodes from URLs. The URL source must be in the same domain or allows Cross-Origin Resource Sharing (CORS).
-
-```javascript
-decodeUrl(url) returns Promise
-```
-
-### Parameters
-
-`url` *string*
-
-### Return Value
-
-Promise<[TextResult[]](../../global-interfaces.md#textresult)>
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
diff --git a/programming-old/javascript/api-reference/BarcodeReader/methods/index.md b/programming-old/javascript/api-reference/BarcodeReader/methods/index.md
deleted file mode 100644
index 14fee575..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/methods/index.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Methods Index - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader methods of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: methods, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: false
-breadcrumbText: Methods
-permalink: /programming/javascript/api-reference/BarcodeReader/methods/index.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Dynamsoft Barcode Reader SDK - Javascript BarcodeReader Methods
-
-## Initialize and Destroy
-
-The following methods are related to initializing and destroying the `BarcodeReader` object.
-
-| Method | Description |
-|----------------------|-------------|
-| [createInstance()](initialize-and-destroy.md#createinstance) | Create a `BarcodeReader` object. |
-| [destroy()](initialize-and-destroy.md#destroy) | Destroy the `BarcodeReader` object. |
-| [detectEnvironment()](initialize-and-destroy.md#detectenvironment) | Detect the current environment. |
-| [isLoaded()](initialize-and-destroy.md#isloaded) | Check if the decoding module is loaded. |
-| [loadWasm()](initialize-and-destroy.md#loadwasm) | Manually load and compile the decoding WASM module. |
-
-## Decode
-
-The following methods are related to decoding barcodes.
-
-| Method | Description |
-|----------------------|-------------|
-| [decode()](decode.md#decode) | Decode barcodes from images, binary data, URLs, and more. |
-| [decodeBase64String()](decode.md#decodebase64string) | Decode barcodes from a base64 encoded string. |
-| [decodeBuffer()](decode.md#decodebuffer) | Decode barcodes from raw buffer. |
-| [decodeUrl()](decode.md#decodeurl) | Decode barcodes from a URL. |
-
-## Parameter and Runtime Settings
-
-The following methods are related to customizing mode and runtime settings.
-
-| Method | Description |
-|----------------------|-------------|
-| [getModeArgument()](parameter-and-runtime-settings.md#getmodeargument) | Get argument value for the specified mode parameter. |
-| [setModeArgument()](parameter-and-runtime-settings.md#setmodeargument) | Set argument value for the specified mode parameter. |
-| [getRuntimeSettings()](parameter-and-runtime-settings.md#getruntimesettings) | Get current runtime settings. |
-| [resetRuntimeSettings()](parameter-and-runtime-settings.md#resetruntimesettings) | Reset runtime settings to default. |
-| [updateRuntimeSettings()](parameter-and-runtime-settings.md#updateruntimesettings) | Modify and update the current runtime settings. |
diff --git a/programming-old/javascript/api-reference/BarcodeReader/methods/initialize-and-destroy.md b/programming-old/javascript/api-reference/BarcodeReader/methods/initialize-and-destroy.md
deleted file mode 100644
index 19a5fe3a..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/methods/initialize-and-destroy.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Initialize and Destroy Methods - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Initialize and Destroy methods of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: createInstance, destroy, detectEnvironment, isLoaded, loadWasm, initialize and destroy methods, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/methods/initialize-and-destroy.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Initialize and Destroy Methods
-
-| Method | Description |
-|----------------------|-------------|
-| [createInstance()](#createinstance) | Create a `BarcodeReader` object. |
-| [destroy()](#destroy) | Destroy the `BarcodeReader` object. |
-| [detectEnvironment()](#detectenvironment) | Detect the current environment. |
-| [isLoaded()](#isloaded) | Check if the decoding module is loaded. |
-| [loadWasm()](#loadwasm) | Manually load and compile the decoding WASM module. |
-
----
-
-## createInstance
-
-Create a `BarcodeReader` object.
-
-```javascript
-createInstance() returns Promise
-```
-
-### Return Value
-
-Promise<BarcodeReader>
-
-### Sample
-
-```javascript
-let reader = await Dynamsoft.BarcodeReader.createInstance();
-```
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## destroy
-
-Destroy the `BarcodeReader` object. Equivalent to the previous method `deleteInstance()`.
-
-```javascript
-destroy() returns Promise
-```
-
-### Return Value
-
-`Promise`
-
-## detectEnvironment
-
-Detect the current device environment.
-
-```javascript
-detectEnvironment() returns Promise
-```
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## isLoaded
-
-Check if the decoding module is loaded.
-
-```javascript
-isLoaded() returns Boolean
-```
-
-### Return Value
-
-`Boolean`
-
-### Sample
-
-```javascript
-Dynamsoft.BarcodeReader.isLoaded()
-```
-
-## loadWasm
-
-Manually load and compile the decoding module. This method can be used to preload the decoding module to avoid lengthy lazy loading.
-
-```javascript
-loadWasm() returns Promise
-```
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
diff --git a/programming-old/javascript/api-reference/BarcodeReader/methods/parameter-and-runtime-settings.md b/programming-old/javascript/api-reference/BarcodeReader/methods/parameter-and-runtime-settings.md
deleted file mode 100644
index 12b53c0c..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/methods/parameter-and-runtime-settings.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Parameter and Runtime Settings Methods - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Parameter and Runtime Settings methods of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: getModeArgument, setModeArgument, getRuntimeSettings, resetRuntimeSettings, updateRuntimeSettings, parameter and runtime settings methods, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/methods/parameter-and-runtime-settings.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Parameter and Runtime Settings Methods
-
-| Method | Description |
-|----------------------|-------------|
-| [getModeArgument()](#getmodeargument) | Get argument value for the specified mode parameter. |
-| [setModeArgument()](#setmodeargument) | Set argument value for the specified mode parameter. |
-| [getRuntimeSettings()](#getruntimesettings) | Get current runtime settings. |
-| [resetRuntimeSettings()](#resetruntimesettings) | Reset runtime settings to default. |
-| [updateRuntimeSettings()](#updateruntimesettings) | Modify and update the current runtime settings. |
-
----
-
-## getModeArgument
-
-Get the argument value for the specified mode parameter.
-
-```javascript
-getModeArgument(modeName, index, argumentName) returns Promise
-```
-
-### Parameters
-
-`modeName` *string*
-`index` *number*
-`argumentName` *string*
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## setModeArgument
-
-Set the argument value for the specified mode parameter.
-
-```javascript
-setModeArgument(modeName, index, argumentName, argumentValue) returns Promise
-```
-
-### Parameters
-
-- `modeName` *string*
-- `index` *number*
-- `argumentName` *string*
-- `argumentValue` *string*
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-```javascript
-await reader.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-```
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## getRuntimeSettings
-
-Get the current runtime settings.
-
-```javascript
-getRuntimeSettings() returns Promise
-```
-
-### Return Value
-
-Promise<[RuntimeSettings](../../global-interfaces.md#runtimesettings)>
-
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## resetRuntimeSettings
-
-Reset all runtime settings to default values.
-
-```javascript
-resetRuntimeSettings() returns Promise
-```
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
-## updateRuntimeSettings
-
-Update the runtime settings with a given object or use the string `speed`, `balance`, or `coverage` to use our preset settings for `BarcodeReader`. The default setting is `coverage`.
-
-```javascript
-updateRuntimeSettings(settings) returns Promise
-```
-
-### Parameters
-
-`settings` [*RuntimeSettings*](../../global-interfaces.md#runtimesettings) | *string*
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-```javascript
-await reader.updateRuntimeSettings('balance');
-let settings = await reader.getRuntimeSettings();
-settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-await reader.updateRuntimeSettings(settings);
-```
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
-
diff --git a/programming-old/javascript/api-reference/BarcodeReader/methods/results.md b/programming-old/javascript/api-reference/BarcodeReader/methods/results.md
deleted file mode 100644
index f28552c7..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/methods/results.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Result Methods - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Result methods of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: getIntermediateResults, result methods, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/methods/results.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Result Methods
-
-| Method | Description |
-|----------------------|-------------|
-| [getIntermediateResults()](#getintermediateresults) | Get intermediate results. |
-
----
-
-## getIntermediateResults
-
-Get the intermediate results containing the original image, colour clustered image, binarized image, contours, lines, etc.
-
-The method is only supported in the **full feature edition**.
-
-```javascript
-getIntermediateResults() returns Promise
-```
-
-### Return Value
-
-`Promise`
-
-### Sample
-
-[Read barcodes from live camera](https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html)
diff --git a/programming-old/javascript/api-reference/BarcodeReader/properties.md b/programming-old/javascript/api-reference/BarcodeReader/properties.md
deleted file mode 100644
index 0892bc22..00000000
--- a/programming-old/javascript/api-reference/BarcodeReader/properties.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: BarcodeReader Properties - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows BarcodeReader Properties of Dynamsoft Barcode Reader JavaScript SDK.
-keywords: _bUseFullFeature, bDestroyed, bSaveOriCanvas, oriCanvas, properties, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-permalink: /programming/javascript/api-reference/BarcodeReader/properties.html
----
-
-
-> This page is applicable to version 8.2.3
-
-# Javascript API Reference - `BarcodeReader` Properties
-
-| Property | Description |
-|----------------------|-------------|
-| [_bUseFullFeature](#_busefullfeature) | If set to `false`, use the compact-featured WASM module. |
-| `bDestroyed` | Indicates whether a `BarcodeReader` object has been destroyed. |
-| `bSaveOriCanvas` | If set to `true`, save the original image to canvas. |
-| `oriCanvas` | The original canvas element. |
-
----
-
-## _bUseFullFeature
-
-Set usage of compact or full featured SDK. If set to `false`, use the compact-featured WASM module.
-
-*Note: this API may change in the future.*
-
-```javascript
-Dynamsoft.BarcodeReader._bUseFullFeature = Boolean
-```
-
-### Default Value
-
-`false` for web
-
-### Sample
-
-```javascript
-Dynamsoft.BarcodeReader._bUseFullFeature = false;
-await Dynamsoft.BarcodeReader.loadWasm();
-```
-
-### :+1: Tips and Tricks
-
-* Check out [what features are included](../../user-guide/features-requirements.md#compact-and-full-editions) in compact and full version.
-* This property **must** be set before [loadWasm](methods/initialize-and-destroy.md#loadwasm).
-* We recommend using the compact version in video decoding for its small size and quick initialization.
-* This property cannot be set in NodeJS and will always use the fully featured version.
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v8.2.5.md b/programming-old/javascript/api-reference/BarcodeScanner-v8.2.5.md
deleted file mode 100644
index ea4322e5..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v8.2.5.md
+++ /dev/null
@@ -1,943 +0,0 @@
----
-layout: default-layout
-title: v8.2.5 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v 8.2.5.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v8.2.5.html
----
-
-
-# BarcodeScanner
-
-* `class` BarcodeScanner *extends [BarcodeReader](./BarcodeReader.md)*
-
-> The `BarcodeScanner` class is used for **video** decoding.
-> `Node.js` does not support `BarcodeScanner`.
-> ```js
-> let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-> scanner.onUnduplicatedRead = txt => console.log(txt);
-> await scanner.show();
-> ```
-
-
-
-## Index
-
-> [**Initialize the Engine** *(Inherited from BarcodeReader)*](BarcodeReader.md#initialize-the-engine)
->
-> | Static Property | Description |
-> |----------------------|-------------|
-> | [engineResourcePath *(BarcodeReader)*](BarcodeReader.md#engineresourcepath) | Specify the engine (WASM) url. |
-> | [_bUseFullFeature *(BarcodeReader)*](BarcodeReader.md#_busefullfeature) | If set to `true`, use the full-featured WASM module. |
->
-> | Static Method | Description |
-> |----------------------|-------------|
-> | [isLoaded *(BarcodeReader)*](BarcodeReader.md#isloaded) | Check if the decoding module is loaded. |
-> | [loadWasm *(BarcodeReader)*](BarcodeReader.md#loadwasm) | Manually load and compile the decoding WASM module. |
-
-
-
-> [**Create and Destroy Instance**](#create-and-destroy-instance)
->
-> | Property | Description |
-> |----------------------|-------------|
-> | [bDestroyed](#bdestroyed) | Indicates whether the `BarcodeScanner` instance has been destroyed. |
->
-> | Static Method | Description |
-> |----------------------|-------------|
-> | [createInstance](#createinstance) | Create a `BarcodeScanner` instance. |
->
-> | Method | Description |
-> |----------------------|-------------|
-> | [destroy](#destroy) | Destroy the `BarcodeScanner` instance. |
-
-
-
-> [**Decode Barcode**](#decode-barcode)
->
-> | Event | Description |
-> |----------------------|-------------|
-> | [onUnduplicatedRead](#onunduplicatedread) | Triggered when a new, unduplicated barcode is found. |
-> | [onFrameRead](#onframeread) | Triggered after a frame has been scanned. |
->
-> | Method | Description |
-> |----------------------|-------------|
-> | [decodeCurrentFrame](#decodecurrentframe) | Decode barcodes from the current frame of the video. |
-
-
-
-> [**Open and Close**](#open-and-close)
->
-> Changing the barcode decoding process will affect the speed and accuracy.
->
-> | Method | Description |
-> |----------------------|-------------|
-> |[open](#open)|Bind UI, open the camera, start decoding.|
-> |[close](#close)|Stop decoding, release camera, unbind UI.|
-> |[show](#show)|Bind UI, open the camera, start decoding, and remove the `UIElement` `display` style if the original style is `display:none;`|
-> |[hide](#hide)|Stop decoding, release camera, unbind UI, and set the Element as `display:none;`.|
-> |[openVideo](#open)|Bind UI, open the camera, but not decode.|
-> |[showVideo](#show)|Bind UI, open the camera, but not decode, and remove the UIElement `display` style if the original style is `display:none;`.|
-> |[isOpen](#isopen)|Check if the scanner is open.|
-
-
-
-> [**Play and Pause**](#play-and-pause)
->
-> Changing the barcode decoding process will affect the speed and accuracy.
->
-> | Event | Description |
-> |----------------------|-------------|
-> | [onPlayed](#onplayed) | Triggered when the camera video stream is played. |
->
-> | Method | Description |
-> |----------------------|-------------|
-> |[play](#play)|Continue the video.|
-> |[pause](#pause)|Pause the video. Do not release the camera.|
-> |[stop](#stop)|Stop the video, and release the camera.|
-> |[pauseScan](#pausescan)|Pause the decoding process.|
-> |[resumeScan](#resumescan)|Resume the decoding process.|
-
-
-
-> [**UI**](#ui)
->
-> Changing the barcode decoding process will affect the speed and accuracy.
->
-> | Property | Description |
-> |----------------------|-------------|
-> |[defaultUIElementURL](#defaultuielementurl)|The url of the default scanner UI.|
-> |[regionMaskFillStyle](#regionmaskfillstyle)|Set the style used when filling the mask beyond the region.|
-> |[regionMaskStrokeStyle](#regionmaskstrokestyle)|Set the style of the region border.|
-> |[regionMaskLineWidth](#regionmasklinewidth)|Set the width of the region border.|
-> |[barcodeFillStyle](#barcodefillstyle)|Set the style used when filling in located barcode.|
-> |[barcodeStrokeStyle](#barcodestrokestyle)|Set the style of the located barcode border.|
-> |[barcodeLineWidth](#barcodelinewidth)|Set the width of the located barcode border.|
->
-> | Method | Description |
-> |----------------------|-------------|
-> |[getUIElement](#getuielement)|Get HTML element containing the `BarcodeScanner` instance.|
-> |[setUIElement](#setuielement)|Set HTML element containing the `BarcodeScanner` instance.|
-
-
-
-> [**Camera Settings**](#camera-settings)
->
-> Changing the barcode decoding process will affect the speed and accuracy.
->
-> | Method | Description |
-> |----------------------|-------------|
-> |[getAllCameras](#getallcameras)|Get infomation of all available cameras on the device.|
-> |[getCurrentCamera](#getcurrentcamera)|Get information about the currently used camera.|
-> |[setCurrentCamera](#setcurrentcamera)|Choose the camera and play it by its information or devide id.|
-> |[getResolution](#getresolution)|Get current camera resolution.|
-> |[setResolution](#setresolution)|Set current camera resolution.|
-> |[getVideoSettings](#getvideosettings)|Get current video settings.|
-> |[updateVideoSettings](#updatevideosettings)|Modify and update video settings.|
-> |[getCapabilities](#getcapabilities)|Get the camera capabilities.|
-> |[turnOnTorch](#turnontorch)|Turn on the torch/flashlight.|
-> |[turnOffTorch](#turnofftorch)|Turn off the torch/flashlight.|
-> |[setColorTemperature](#setcolortemperature)|Adjusts the color temperature.|
-> |[setExposureCompensation](#setexposurecompensation)|Adjusts the exposure level.|
-> |[setZoom](#setzoom)|Adjusts the zoom ratio.|
-> |[setFrameRate](#setframerate)|Adjusts the frame rate.|
-
-
-
-> [**Decoding Settings**](#decoding-settings)
->
-> Changing the barcode decoding process will affect the speed and accuracy.
->
-> | Method | Description |
-> |----------------------|-------------|
-> | [getRuntimeSettings](#getruntimesettings) | Get current runtime settings. |
-> | [updateRuntimeSettings](#updateruntimesettings) | Modify and update the current runtime settings. |
-> | [resetRuntimeSettings](#resetruntimesettings) | Reset runtime settings to default. |
-> | [getModeArgument](#getmodeargument) | Get argument value for the specified mode parameter. |
-> | [setModeArgument](#setmodeargument) | Set argument value for the specified mode parameter. |
-
-
-
-> [**License** *(Inherited from BarcodeReader)*](BarcodeReader.md#license)
->
-> | Property | Description |
-> |---------------------|-------------|
-> | [productKeys *(BarcodeReader)*](BarcodeReader.md#productkeys) | Get or set the Dynamsoft Barcode Reader SDK product keys. |
-> | [licenseServer *(BarcodeReader)*](BarcodeReader.md#licenseserver) | Specify the license server URL. |
-> | [handshakeCode *(BarcodeReader)*](BarcodeReader.md#handshakecode) | Use Handshake Code to get authentication from network. |
-> | [organizationID *(BarcodeReader)*](BarcodeReader.md#organizationid) | Use organization ID to get authentication from network. |
-> | [sessionPassword *(BarcodeReader)*](BarcodeReader.md#sessionpassword) | Specify a password to protect the Handshake Code from abuse. |
-
-
-
-> [**Other**](#other)
->
-> | Static Property | Description |
-> |---------------------|-------------|
-> | [version *(BarcodeReader)*](BarcodeReader.md#version) | Get the current version. |
->
-> | Property | Description |
-> |---------------------|-------------|
-> | [bSaveOriCanvas](#bsaveoricanvas) | If set to `true`, save the original image in `oriCanvas`. |
-> | [oriCanvas](#oricanvas) | An [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) object that holds the original image. |
-> |[bPlaySoundOnSuccessfulRead](#bplaysoundonsuccessfulread)|Whether to play sound when the scanner reads a barcode successfully.|
-> |[soundOnSuccessfullRead](#soundonsuccessfullread)|The sound to play when the scanner get successfull read.|
-> |[bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread)|Whether to vibrate when the scanner reads a barcode successfully.|
-> |[vibrateDuration](#vibrateduration)|Get or set how long (ms) the vibration lasts.|
->
-> | Static Method | Description |
-> |----------------------|-------------|
-> | [detectEnvironment *(BarcodeReader)*](BarcodeReader.md#detectenvironment) | Detect environment and get a report. |
->
-> | Method | Description |
-> |----------------------|-------------|
-> | [getScanSettings](#getscansettings) | Get current scan settings. |
-> | [updateScanSettings](#updatescansettings) | Modify and update scan settings. |
-
-
-
-## Create and Destroy Instance
-
-### bDestroyed
-
-* bDestroyed: *boolean*
-
-> Indicates whether the instance has been destroyed.
-
-
-
-### createInstance
-
-* `static` createInstance(): *Promise<[BarcodeScanner](#barcodescanner)>*
-
-> Create a `BarcodeScanner` instance.
->
-> ```js
-> let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-> ```
-
-
-
-### destroy
-
-* destroy(): *Promise<void>*
-
-> Destroy the `BarcodeScanner` instance. If your page needs to create new instances from time to time, don't forget to destroy unused old instances, otherwise it will cause memory leaks.
-
-
-
-## Decode Barcode
-
-### onUnduplicatedRead
-
-* `event` onUnduplicatedRead?: *(txt: string, result: [TextResult](interface/TextResult.md)) => void*
-
-> This event is triggered when a new, unduplicated barcode is found.
-> `txt` holds the barcode text string. `result` contains more info.
-> Old barcodes will be remembered for [duplicateForgetTime](interface/ScanSettings.md).
->
-> ```js
-> scanner.onUnduplicatedRead = (txt, result) => {
-> alert(txt);
-> console.log(result);
-> }
-> ```
-
-
-
-### onFrameRead
-
-* `event` onFrameRead?: *(results: [TextResult](interface/TextResult.md)[]) => void*
-
-> The event is triggered after a frame has been scanned.
-> The results object contains all the barcode results in this frame.
->
-> ```js
-> scanner.onFrameRead = results => {
-> for(let result of results){
-> console.log(result.barcodeText);
-> }
-> };
-> ```
-
-
-
-### decodeCurrentFrame
-
-* decodeCurrentFrame(): *Promise<[TextResult](interface/TextResult.md)[]>*
-
-> Decode barcodes from the current frame of the video.
->
-> ```js
-> await scanner.showVideo();
-> console.log(await scanner.decodeCurrentFrame());
-> ```
-
-## Open and Close
-
-### open
-
-* open(): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Bind UI, open the camera, start decoding.
->
-> ```js
-> await scanner.setUIElement(document.getElementById("my-barcode-scanner"));
-> scanner.onUnduplicatedRead = (txt, result) => { alert(txt); console.log(result); };
-> await scanner.open();
-> ```
->
-> *@see* [show](#show)
-
-
-
-### close
-
-* close(): *Promise<void>*
-
-> Stop decoding, release camera, unbind UI.
->
-> ```js
-> await scanner.open();
-> await scanner.close();
->
-> await scanner.openVideo();
-> await scanner.close();
-> ```
-
-
-
-### show
-
-* show(): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Bind UI, open the camera, start decoding, and remove the UIElement `display` style if the original style is `display:none;`.
->
-> ```js
-> await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.2.5/dist/dbr.scanner.html");
-> scanner.onUnduplicatedRead = (txt, result) => { alert(txt); console.log(result); };
-> await scanner.show();
-> ```
-
-
-
-### hide
-
-* hide(): *Promise<void>*
-
-> Stop decoding, release camera, unbind UI.
->
-> ```js
-> await scanner.open();
-> await scanner.hide();
->
-> await scanner.openVideo();
-> await scanner.hide();
-> ```
-
-
-
-### openVideo
-
-* openVideo(): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Bind UI, open the camera, but not decode.
->
-> ```js
-> await scanner.setUIElement(document.getElementById("my-barcode-scanner"));
-> await scanner.openVideo();
-> console.log(await scanner.decodeCurrentFrame());
-> ```
-
-
-
-### showVideo
-
-* showVideo(): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Bind UI, open the camera, but not decode.
->
-> ```js
-> await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.2.5/dist/dbr.scanner.html");
-> await scanner.showVideo();
-> console.log(await scanner.decodeCurrentFrame());
-> ```
-
-
-
-### isOpen
-
-* isOpen(): *boolean*
-
-> Check if the scanner is open.
-
-
-
-## Play and Pause
-
-### onPlayed
-
-* `event` onPlayed?: *(info: [ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)) => void*
-
-> Triggered when the camera video stream is played.
->
-> ```js
-> scanner.onplayed = rsl=>{ console.log(rsl.width+'x'+rsl.height) };
-> await scanner.show(); // or open, play, setCurrentCamera, like these.
-> ```
-
-
-
-### play
-
-* play(deviceId?: *string*, width?: *number*, height?: *number*): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Continue the video.
->
-> ```js
-> scanner.pause();
-> \\*** a lot of work ***
-> await scanner.play();
-> ```
-
-
-
-### pause
-
-* pause(): *void*
-
-> Pause the video. Do not release the camera.
-
-
-
-### stop
-
-* stop(): *void*
-
-> Stop the video, and release the camera.
-
-
-
-### pauseScan
-
-* pauseScan(): *void*
-
-> Pause the decoding process.
-
-
-
-### resumeScan
-
-* resumeScan(): *void*
-
-> Resume the decoding process.
-
-
-
-## UI
-
-### defaultUIElementURL
-
-* `static` defaultUIElementURL: *string*
-
-> The url of the default scanner UI.
->
-> Can only be changed before [createInstance](#createinstance).
->
-> ```js
-> Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.2.5/dist/dbr.scanner.html";
-> let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-> await scanner.show();
-> ```
-
-
-
-### regionMaskFillStyle
-
-* regionMaskFillStyle: *string = "rgba(0,0,0,0.5)"*
-
-> Set the style used when filling the mask beyond the region.
-
-
-
-### regionMaskStrokeStyle
-
-* regionMaskStrokeStyle: *string = "rgb(254,142,20)"*
-
-> Set the style of the region border.
-
-
-
-### regionMaskLineWidth
-
-* regionMaskLineWidth: *number = 2*
-
-> Set the style used when filling in located barcode.
-
-
-
-### barcodeFillStyle
-
-* barcodeFillStyle: *string = "rgba(254,180,32,0.3)"*
-
-> Set the style used when filling in located barcode.
-
-
-
-### barcodeStrokeStyle
-
-* barcodeStrokeStyle: *string = "rgba(254,180,32,0.9)"*
-
-> Set the style of the located barcode border.
-
-
-
-### barcodeLineWidth
-
-* barcodeLineWidth: *number = 1*
-
-> Set the width of the located barcode border.
-
-
-
-### getUIElement
-
-* getUIElement(): *HTMLElement*
-
-> Get HTML element containing the [BarcodeScanner](#barcodescanner) instance.
-
-
-
-### setUIElement
-
-* setUIElement(elementOrUrl: *HTMLElement | string*): *Promise<void>*
-
-> Set html element containing the `BarcodeScanner` instance.
->
-> ```html
->
->
-> ```
->
-> ```html
->
->
-> ```
-
-
-
-## Camera Settings
-
-### getAllCameras
-
-* getAllCameras(): *Promise<[VideoDeviceInfo](interface/VideoDeviceInfo.md)[]>*
-
-> Get infomation of all available cameras on the device.
->
-> ```js
-> let cameras = await scanner.getAllCameras();
-> if(cameras.length){
-> await scanner.setCurrentCamera(cameras[0]);
-> }
-> ```
-
-
-
-### getCurrentCamera
-
-* getCurrentCamera(): *Promise<[VideoDeviceInfo](interface/VideoDeviceInfo.md) | null>*
-
-> Get information about the currently used camera.
->
-> ```js
-> let camera = await scanner.getCurrentCamera();
-> ```
-
-
-
-### setCurrentCamera
-
-* setCurrentCamera(cameraInfoOrDeviceId: *any*): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md)>*
-
-> Choose the camera and play it by its information or devide id.
->
-> ```js
-> let cameras = await scanner.getAllCameras();
-> if(cameras.length){
-> await scanner.setCurrentCamera(cameras[0]);
-> }
-> ```
-
-
-
-### getResolution
-
-* getResolution(): *number[]*
-
-> Get current camera resolution.
->
-> ```js
-> let rsl = await scanner.getResolution();
-> console.log(rsl.width + " x " + rsl.height);
-> ```
-
-
-
-### setResolution
-
-* setResolution(width: *number | number[]*, height: *number*)
-
-> Set current camera resolution.
-> ```js
-> await scanner.setResolution(width, height);
-> ```
-
-
-
-### getVideoSettings
-
-* getVideoSettings(): *[MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)*
-
-> Get current video settings.
-
-
-
-### updateVideoSettings
-
-* updateVideoSettings([MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints): *any*): *Promise<[ScannerPlayCallbackInfo](interface/ScannerPlayCallbackInfo.md) | void>*
-
-> Modify and update video settings.
->
-> ```js
-> await scanner.updateVideoSettings({ video: {width: {ideal: 1280}, height: {ideal: 720}, facingMode: {ideal: 'environment'}} });
-> ```
-
-
-
-### getCapabilities
-
-* getCapabilities(): *[MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)*
-
-> Gets the camera capabilities.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```console
-> > scanner.getCapabilities()
-> < {
-> "aspectRatio":{"max":3840,"min":0.000462962962962963},
-> "colorTemperature":{max: 7000, min: 2850, step: 50},
-> "deviceId":"1e...3af7",
-> "exposureCompensation": {max: 2.0000040531158447, min: -2.0000040531158447, step: 0.16666699945926666},
-> "exposureMode":["continuous","manual"],
-> "facingMode":["environment"],
-> "focusMode":["continuous","single-shot","manual"],
-> "frameRate":{"max":30,"min":0},
-> "groupId":"71...a935",
-> "height":{"max":2160,"min":1},
-> "resizeMode":["none","crop-and-scale"],
-> "torch":true,
-> "whiteBalanceMode":["continuous","manual"],
-> "width":{"max":3840,"min":1},
-> "zoom":{max: 606, min: 100, step: 2}
-> }
-> ```
-
-
-
-### turnOnTorch
-
-* turnOnTorch(): *Promise<void>*
-
-> Turns off the Torch.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.turnOnTorch();
-> ```
->
-> *@see* [turnOffTorch](#turnofftorch) [getCapabilities](#getcapabilities)
-
-
-
-### turnOffTorch
-
-* turnOffTorch(): *Promise<void>*
-
-> Turns off the torch.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.turnOffTorch();
-> ```
->
-> *@see* [turnOnTorch](#turnontorch) [getCapabilities](#getcapabilities)
-
-
-
-### setColorTemperature
-
-* setColorTemperature(value: *number*): *Promise<void>*
-
-> Adjusts the color temperature.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.setColorTemperature(5000);
-> ```
->
-> *@see* [getCapabilities](#getcapabilities)
-
-
-
-### setExposureCompensation
-
-* setExposureCompensation(value: *number*): *Promise<void>*
-
-> Adjusts the exposure level.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.setExposureCompensation(-0.7);
-> ```
->
-> *@see* [getCapabilities](#getcapabilities)
-
-
-
-### setZoom
-
-* setZoom(value: *number*): *Promise<void>*
-
-> Adjusts the zoom ratio.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.setZoom(400);
-> ```
->
-> *@see* [getCapabilities](#getcapabilities)
-
-
-
-### setFrameRate
-
-* setFrameRate(value: *number*): *Promise<void>*
-
-> Adjusts the frame rate.
->
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
->
-> ```js
-> await scanner.setFrameRate(10);
-> ```
->
-> *@see* [getCapabilities](#getcapabilities)
-
-
-
-## Decoding Settings
-
-### getRuntimeSettings
-
-* getRuntimeSettings(): *Promise<[RuntimeSettings](interface/RuntimeSettings.md)>*
-
-> Gets current runtime settings.
-> ```js
-> let settings = await scanner.getRuntimeSettings();
-> settings.deblurLevel = 5;
-> await scanner.updateRuntimeSettings(settings);
-> ```
-
-
-
-### updateRuntimeSettings
-
-* updateRuntimeSettings(settings: *[RuntimeSettings](interface/RuntimeSettings.md) | string*): *Promise<void>*
-
-> Update runtime settings with a given struct, or a string of `speed`, `balance`, `coverage` and `single` to use preset settings for BarcodeScanner.
->
-> We recommend using the speed-optimized `single` preset if scanning only one barcode at a time. The `single` is only available in `BarcodeScanner`.
->
-> The default settings for BarcodeScanner is `single`.
->
-> ```js
-> await scanner.updateRuntimeSettings('balance');
-> let settings = await scanner.getRuntimeSettings();
-> settings.barcodeFormatIds = Dynamsoft.DBR.EnumBarcodeFormat.BF_ONED;
-> await scanner.updateRuntimeSettings(settings);
-> ```
-> *@see* [RuntimeSettings](interface/RuntimeSettings.md)
-
-
-
-### resetRuntimeSettings
-
-* resetRuntimeSettings(): *Promise<void>*
-
-> Resets all parameters to default values.
-> ```js
-> await scanner.resetRuntimeSettings();
-> ```
-
-
-
-### getModeArgument
-
-* getModeArgument(modeName: *string*, index: *number*, argumentName: *string*): *Promise<string>*
-
-> Get argument value for the specified mode parameter.
->
-> ```js
-> let argumentValue = await scanner.getModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy");
-> ```
->
-> *@see* [C++ getModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=latest#getmodeargument)
-
-
-
-### setModeArgument
-
-* setModeArgument(modeName: *string*, index: *number*, argumentName: *string*, argumentValue: *string*): *Promise<string>*
-
-> Set argument value for the specified mode parameter.
->
-> ```js
-> await scanner.setModeArgument("BinarizationModes", 0, "EnableFillBinaryVacancy", "1");
-> ```
->
-> *@see* [C++ setModeArgument](https://www.dynamsoft.com/barcode-reader/programming/cplusplus/api-reference/cbarcodereader-methods/parameter-and-runtime-settings-basic.html?ver=latest#setmodeargument)
-
-
-
-## Other
-
-### bSaveOriCanvas
-
-* bSaveOriCanvas: *boolean* = false;
-
-> Whether to save the original image into canvas.
-> ```js
-> scanner.bSaveOriCanvas = true;
-> let results = await scanner.decode(source);
-> document.body.append(scanner.oriCanvas);
-> ```
-
-
-
-### oriCanvas
-
-* `readonly` oriCanvas: *[HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) | [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)*
-
-> An [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas) object that holds the original image.
-> ```js
-> scanner.bSaveOriCanvas = true;
-> let results = await scanner.decode(source);
-> document.body.append(scanner.oriCanvas);
-> ```
-
-
-
-### bPlaySoundOnSuccessfulRead
-
-* bPlaySoundOnSuccessfulRead: *(boolean | string) = false*;
-
-> Whether to play sound when the scanner reads a barcode successfully.
-> Default value is `false`, which does not play sound.
-> Use `frame` or `true` to play a sound when any barcode is found within a frame.
-> Use `unduplicated` to play a sound only when any unique/unduplicated barcode is found within a frame.
-> ```js
-> // A user gesture required. https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies
-> startPlayButton.addEventListener('click', function() {
-> scanner.bPlaySoundOnSuccessfulRead = true;
-> });
-> ```
-> refer: `favicon bug` https://bugs.chromium.org/p/chromium/issues/detail?id=1069731&q=favicon&can=2
-
-
-
-### soundOnSuccessfullRead
-
-* soundOnSuccessfullRead: [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement)
-
-> The sound to play when the scanner get successfull read.
-> ```js
-> scanner.soundOnSuccessfullRead = new Audio("./pi.mp3");
-> ```
-
-
-
-### bVibrateOnSuccessfulRead
-
-* bVibrateOnSuccessfulRead: *(boolean | string) = false*
-
-> Whether to vibrate when the scanner reads a barcode successfully.
-> Default value is `false`, which does not vibrate.
-> Use `frame` or `true` to vibrate when any barcode is found within a frame.
-> Use `unduplicated` to vibrate only when any unique/unduplicated barcode is found within a frame.
-> ```js
-> // Can I use? https://caniuse.com/?search=vibrate
-> // A user gesture required. https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies
-> startVibrateButton.addEventListener('click', function() {
-> scanner.bVibrateOnSuccessfulRead = true;
-> });
-> ```
-
-
-
-### vibrateDuration
-
-* vibrateDuration: *number = 300*
-
-> Get or set how long (ms) the vibration lasts.
->
-> *@see* [bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread)
-
-
-
-### getScanSettings
-
-* getScanSettings(): *Promise<[ScanSettings](interface/ScanSettings.md)>*
-
-> Get current scan settings.
-> ```js
-> let scanSettings = await scanner.getScanSettings();
-> scanSettings.intervalTime = 50;
-> scanSettings.duplicateForgetTime = 1000;
-> await scanner.updateScanSettings(scanSettings);
-> ```
-
-
-
-### updateScanSettings
-
-* updateScanSettings(settings: *[ScanSettings](interface/ScanSettings.md)*): *Promise<void>*
-
-> Modify and update scan settings.
-> ```js
-> let scanSettings = await scanner.getScanSettings();
-> scanSettings.intervalTime = 50;
-> scanSettings.duplicateForgetTime = 1000;
-> await scanner.updateScanSettings(scanSettings);
-> ```
-
-
-
-
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v8.4.0.md b/programming-old/javascript/api-reference/BarcodeScanner-v8.4.0.md
deleted file mode 100644
index 339548e9..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v8.4.0.md
+++ /dev/null
@@ -1,1309 +0,0 @@
----
-layout: default-layout
-title: v8.4.0 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v8.4.0.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v8.4.0.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.scanner.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUnduplicatedRead = txt => console.log(txt);
-await scanner.show();
-```
-
-
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroy](#destroy) | Destroys the `BarcodeScanner` instance. |
-| [bDestroyed](#bdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUnduplicatedRead](#onunduplicatedread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-| [decodeCurrentFrame](#decodecurrentframe) | Scans the current frame of the video for barcodes. |
-
-### Basic Interaction
-
-| API Name | Description |
-|---|---|
-| [show](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [pauseScan](#pausescan) | Pauses the decoding process. |
-| [resumeScan](#resumescan) | Resumes the decoding process. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [bPlaySoundOnSuccessfulRead](#bplaysoundonsuccessfulread) | Whether and when to play sound on barcode recognition. |
-| [soundOnSuccessfullRead](#soundonsuccessfullread) | Specifies the sound to play on barcode recognition. |
-| [bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread) | Whether and when to vibrate on barcode recognition. |
-| [vibrateDuration](#vibrateduration) | Returns or sets how long the vibration lastsin milliseconds. |
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. | |
-| [getScanSettings](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [getAllCameras](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings](#updatevideosettings) | Changes the video input. |
-| [openVideo](#openvideo) | Binds UI and opens the camera to show the video stream. |
-| [showVideo](#showvideo) | Similar to openVideo but will also show the UI Element if it is hidden. |
-| [play](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pause](#pause) | Pauses the video without releasing the camera. |
-| [stop](#stop) | Stops the video and releases the camera. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate](#setframerate) | Adjusts the frame rate. |
-| [setColorTemperature](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setZoom](#setzoom) | Sets the exposure compensation index. |
-| [turnOnTorch](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch](#turnofftorch) | Turns off the torch/flashlight. |
-
-The following are inherited from the `BarcodeReader` Class.
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [bSaveOriCanvas](./BarcodeReader.md#bsaveoricanvas) | Whether to save the original image into a < canvas> element. |
-| [oriCanvas](./BarcodeReader.md#oricanvas) | An `HTMLCanvasElement` that holds the original image. |
-
-
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-
-
-## destroy
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroy(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroy();
-```
-
-
-
-
-## bDestroyed
-
-Indicates whether the instance has been destroyed.
-
-```typescript
-readonly bDestroyed: boolean
-```
-
-
-
-## onUnduplicatedRead
-
-This event is triggered when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUnduplicatedRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) = {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## onFrameRead
-
-This event is triggered after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeCurrentFrame
-
-Scans the current frame of the video for barcodes.
-
-```typescript
-decodeCurrentFrame(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this frame.
-
-**Code Snippet**
-
-```js
-await scanner.showVideo();
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-```typescript
-show(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-await scanner.hide();
-```
-
-
-
-## pauseScan
-
-Pauses the decoding process.
-
-```typescript
-pauseScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## bPlaySoundOnSuccessfulRead
-
-Whether and when to play sound on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for any sound to play). Allowed values are
-
-* `false`: never play sound, the default value;
-* `true`: play sound when one or multiple barcodes are found on a frame;
-* `frame`: same as `true`;
-* `unduplicated`: play sound when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, play only once).
-
-```typescript
-bPlaySoundOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// A user gesture required.
-startPlayButton.addEventListener('click', function() {
- scanner.bPlaySoundOnSuccessfulRead = true;
-});
-```
-
-
-
-## soundOnSuccessfullRead
-
-Specifies the sound to play on barcode recognition. If not specified, the default one is used.
-
-```typescript
-soundOnSuccessfullRead: HTMLAudioElement
-```
-
-**Code Snippet**
-
-```js
-scanner.soundOnSuccessfullRead = new Audio("./pi.mp3");
-```
-
-**See also**
-
-* [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement)
-* [bPlaySoundOnSuccessfulRead](#bplaysoundonsuccessfulread)
-
-
-
-## bVibrateOnSuccessfulRead
-
-Whether and when to vibrate on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for the vibration). Allowed values are
-
-* `false`: never vibrate, the default value;
-* `true`: vibrate when one or multiple barcodes are found on a frame;
-* `frame`: same as `true`;
-* `unduplicated`: vibrate when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, vibrate only once).
-
-```typescript
-bVibrateOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// Can I use? https://caniuse.com/?search=vibrate
-startVibrateButton.addEventListener('click', function() {
- scanner.bVibrateOnSuccessfulRead = true;
-});
-```
-
-
-
-## vibrateDuration
-
-Returns or sets how long the vibration lasts in milliseconds. The default value is `300` .
-
-```typescript
-vibrateDuration: number
-```
-
-**See also**
-
-* [bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread)
-
-
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera or select an existing image for barcode reading.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-```typescript
-singleFrameMode: boolean
-```
-
-
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-```
-
-```html
-
-
-```
-
-
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.4.0/dist/dbr.scanner.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254,180,32,0.9)`.
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1`.
-
-```typescript
-barcodeLineWidth: number
-```
-
-
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0,0,0,0.5)`.
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254,142,20)`.
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2`.
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID`: specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = await scanner.getResolution();
-console.log(rsl.width + " x " + rsl.height);
-```
-
-
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width`: specifies the horizontal resolution.
-`height`: specifies the vertical resolution.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints`: specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({ video: {width: {ideal: 1280}, height: {ideal: 720}, facingMode: {ideal: 'environment'}} });
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## openVideo
-
-Binds UI and opens the camera to show the video stream.
-
-```typescript
-openVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.4.0/dist/dbr.scanner.html");
-await scanner.openVideo(); // The video will start playing but it may not be visible on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## showVideo
-
-Similar to [openVideo](#openvideo) but will also show the UI Element if it is hidden.
-
-```typescript
-showVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.4.0/dist/dbr.scanner.html");
-await scanner.showVideo(); // The video will start playing and show up on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onplayed = rsl=>{ console.log(rsl.width+'x'+rsl.height) };
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1}
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The current values for each constrainable property of the current camera
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate`: specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur`: specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation`: specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setZoom
-
-Sets current zoom value.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue`: specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-## turnOnTorch
-
-Turns on the torch/flashlight.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v8.6.0.md b/programming-old/javascript/api-reference/BarcodeScanner-v8.6.0.md
deleted file mode 100644
index 0c9f8d04..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v8.6.0.md
+++ /dev/null
@@ -1,1295 +0,0 @@
----
-layout: default-layout
-title: v8.6.0 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v8.6.0.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v8.6.0.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.scanner.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUnduplicatedRead = txt => console.log(txt);
-await scanner.show();
-```
-
-
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUnduplicatedRead](#onunduplicatedread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-| [decodeCurrentFrame](#decodecurrentframe) | Scans the current frame of the video for barcodes. |
-
-### Basic Interaction
-
-| API Name | Description |
-|---|---|
-| [show](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [pauseScan](#pausescan) | Pauses the decoding process. |
-| [resumeScan](#resumescan) | Resumes the decoding process. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [whenToPlaySoundforSuccessfulRead](#whentoplaysoundforsuccessfulread) | Sets when to play sound on barcode recognition. |
-| [soundOnSuccessfullRead](#soundonsuccessfullread) | Specifies the sound to play on barcode recognition. |
-| [whenToVibrateforSuccessfulRead](#whentovibrateforsuccessfulread) | Sets when to vibrate on barcode recognition. |
-| [vibrateDuration](#vibrateduration) | Returns or sets how long the vibration lastsin milliseconds. |
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [getAllCameras](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings](#updatevideosettings) | Changes the video input. |
-| [openVideo](#openvideo) | Binds UI and opens the camera to show the video stream. |
-| [showVideo](#showvideo) | Similar to openVideo but will also show the UI Element if it is hidden. |
-| [play](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pause](#pause) | Pauses the video without releasing the camera. |
-| [stop](#stop) | Stops the video and releases the camera. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate](#setframerate) | Adjusts the frame rate. |
-| [setColorTemperature](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setZoom](#setzoom) | Sets the exposure compensation index. |
-| [turnOnTorch](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch](#turnofftorch) | Turns off the torch/flashlight. |
-
-The following are inherited from the `BarcodeReader` Class.
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [bSaveOriCanvas](./BarcodeReader.md#bsaveoricanvas) | Whether to save the original image into a < canvas> element. |
-| [oriCanvas](./BarcodeReader.md#oricanvas) | An `HTMLCanvasElement` that holds the original image. |
-
-
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUnduplicatedRead
-
-This event is triggered when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUnduplicatedRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) = {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## onFrameRead
-
-This event is triggered after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeCurrentFrame
-
-Scans the current frame of the video for barcodes.
-
-```typescript
-decodeCurrentFrame(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this frame.
-
-**Code Snippet**
-
-```js
-await scanner.showVideo();
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-```typescript
-show(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-await scanner.hide();
-```
-
-
-
-## pauseScan
-
-Pauses the decoding process.
-
-```typescript
-pauseScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## whenToPlaySoundforSuccessfulRead
-
-Sets when to play sound on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for any sound to play). Allowed values are
-
-* `never`: never play sound, the default value;
-* `frame`: play sound when one or multiple barcodes are found on a frame;
-* `unduplicated`: play sound when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, play only once).
-
-```typescript
-bPlaySoundOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// A user gesture required.
-startPlayButton.addEventListener('click', function() {
- scanner.bPlaySoundOnSuccessfulRead = true;
-});
-```
-
-
-
-## soundOnSuccessfullRead
-
-Specifies the sound to play on barcode recognition. If not specified, the default one is used.
-
-```typescript
-soundOnSuccessfullRead: HTMLAudioElement
-```
-
-**Code Snippet**
-
-```js
-scanner.soundOnSuccessfullRead = new Audio("./pi.mp3");
-```
-
-**See also**
-
-* [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement)
-* [bPlaySoundOnSuccessfulRead](#bplaysoundonsuccessfulread)
-
-## whenToVibrateforSuccessfulRead
-
-Sets when to vibrate on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for the vibration). Allowed values are
-
-* `never`: never vibrate, the default value;
-* `frame`: vibrate when one or multiple barcodes are found on a frame;
-* `unduplicated`: vibrate when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, vibrate only once).
-
-```typescript
-bVibrateOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// Can I use? https://caniuse.com/?search=vibrate
-startVibrateButton.addEventListener('click', function() {
- scanner.bVibrateOnSuccessfulRead = true;
-});
-```
-
-## vibrateDuration
-
-Returns or sets how long the vibration lasts in milliseconds. The default value is `300` .
-
-```typescript
-vibrateDuration: number
-```
-
-**See also**
-
-* [bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread)
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera or select an existing image for barcode reading.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-```typescript
-singleFrameMode: boolean
-```
-
-
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-```
-
-```html
-
-
-```
-
-
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.6.0/dist/dbr.scanner.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254,180,32,0.9)`.
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1`.
-
-```typescript
-barcodeLineWidth: number
-```
-
-
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0,0,0,0.5)`.
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254,142,20)`.
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2`.
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID`: specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = await scanner.getResolution();
-console.log(rsl.width + " x " + rsl.height);
-```
-
-
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width`: specifies the horizontal resolution.
-`height`: specifies the vertical resolution.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints`: specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({ video: {width: {ideal: 1280}, height: {ideal: 720}, facingMode: {ideal: 'environment'}} });
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## openVideo
-
-Binds UI and opens the camera to show the video stream.
-
-```typescript
-openVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.6.0/dist/dbr.scanner.html");
-await scanner.openVideo(); // The video will start playing but it may not be visible on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## showVideo
-
-Similar to [openVideo](#openvideo) but will also show the UI Element if it is hidden.
-
-```typescript
-showVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.6.0/dist/dbr.scanner.html");
-await scanner.showVideo(); // The video will start playing and show up on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onplayed = rsl=>{ console.log(rsl.width+'x'+rsl.height) };
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1}
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The current values for each constrainable property of the current camera
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate`: specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur`: specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation`: specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setZoom
-
-Sets current zoom value.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue`: specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v8.8.7.md b/programming-old/javascript/api-reference/BarcodeScanner-v8.8.7.md
deleted file mode 100644
index 964d6dd2..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v8.8.7.md
+++ /dev/null
@@ -1,1293 +0,0 @@
----
-layout: default-layout
-title: v8.8.7 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v8.8.7.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v8.8.7.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.scanner.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUnduplicatedRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUnduplicatedRead](#onunduplicatedread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-| [decodeCurrentFrame](#decodecurrentframe) | Scans the current frame of the video for barcodes. |
-
-### Basic Interaction
-
-| API Name | Description |
-|---|---|
-| [show](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [pauseScan](#pausescan) | Pauses the decoding process. |
-| [resumeScan](#resumescan) | Resumes the decoding process. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [whenToPlaySoundforSuccessfulRead](#whentoplaysoundforsuccessfulread) | Sets when to play sound on barcode recognition. |
-| [soundOnSuccessfullRead](#soundonsuccessfullread) | Specifies the sound to play on barcode recognition. |
-| [whenToVibrateforSuccessfulRead](#whentovibrateforsuccessfulread) | Sets when to vibrate on barcode recognition. |
-| [vibrateDuration](#vibrateduration) | Returns or sets how long the vibration lastsin milliseconds. |
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [getAllCameras](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings](#updatevideosettings) | Changes the video input. |
-| [openVideo](#openvideo) | Binds UI and opens the camera to show the video stream. |
-| [showVideo](#showvideo) | Similar to openVideo but will also show the UI Element if it is hidden. |
-| [play](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pause](#pause) | Pauses the video without releasing the camera. |
-| [stop](#stop) | Stops the video and releases the camera. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate](#setframerate) | Adjusts the frame rate. |
-| [setColorTemperature](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setZoom](#setzoom) | Sets the exposure compensation index. |
-| [turnOnTorch](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch](#turnofftorch) | Turns off the torch/flashlight. |
-
-The following are inherited from the `BarcodeReader` Class.
-
-### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [bSaveOriCanvas](./BarcodeReader.md#bsaveoricanvas) | Whether to save the original image into a < canvas> element. |
-| [oriCanvas](./BarcodeReader.md#oricanvas) | An `HTMLCanvasElement` that holds the original image. |
-
-
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUnduplicatedRead
-
-This event is triggered when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUnduplicatedRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) = {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## onFrameRead
-
-This event is triggered after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## decodeCurrentFrame
-
-Scans the current frame of the video for barcodes.
-
-```typescript
-decodeCurrentFrame(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `TextResult` object that contains all the barcode results found in this frame.
-
-**Code Snippet**
-
-```js
-await scanner.showVideo();
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-```typescript
-show(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUnduplicatedRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-await scanner.hide();
-```
-
-
-
-## pauseScan
-
-Pauses the decoding process.
-
-```typescript
-pauseScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## whenToPlaySoundforSuccessfulRead
-
-Sets when to play sound on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for any sound to play). Allowed values are
-
-* `never`: never play sound, the default value;
-* `frame`: play sound when one or multiple barcodes are found on a frame;
-* `unduplicated`: play sound when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, play only once).
-
-```typescript
-bPlaySoundOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// A user gesture required.
-startPlayButton.addEventListener('click', function() {
- scanner.bPlaySoundOnSuccessfulRead = true;
-});
-```
-
-
-
-## soundOnSuccessfullRead
-
-Specifies the sound to play on barcode recognition. If not specified, the default one is used.
-
-```typescript
-soundOnSuccessfullRead: HTMLAudioElement
-```
-
-**Code Snippet**
-
-```js
-scanner.soundOnSuccessfullRead = new Audio("./pi.mp3");
-```
-
-**See also**
-
-* [HTMLAudioElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement)
-* [bPlaySoundOnSuccessfulRead](#bplaysoundonsuccessfulread)
-
-## whenToVibrateforSuccessfulRead
-
-Sets when to vibrate on barcode recognition (user input is required on iOS or [Chrome](https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies) for the vibration). Allowed values are
-
-* `never`: never vibrate, the default value;
-* `frame`: vibrate when one or multiple barcodes are found on a frame;
-* `unduplicated`: vibrate when a unique/unduplicated barcode is found (if multiple unique barcodes are found on the same frame, vibrate only once).
-
-```typescript
-bVibrateOnSuccessfulRead: (boolean | string)
-```
-
-**Default value**
-
- `false`
-
-**Code Snippet**
-
-```js
-// Can I use? https://caniuse.com/?search=vibrate
-startVibrateButton.addEventListener('click', function() {
- scanner.bVibrateOnSuccessfulRead = true;
-});
-```
-
-## vibrateDuration
-
-Returns or sets how long the vibration lasts in milliseconds. The default value is `300` .
-
-```typescript
-vibrateDuration: number
-```
-
-**See also**
-
-* [bVibrateOnSuccessfulRead](#bvibrateonsuccessfulread)
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera or select an existing image for barcode reading.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-```typescript
-singleFrameMode: boolean
-```
-
-
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-```
-
-```html
-
-
-```
-
-
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.8.7/dist/dbr.scanner.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254,180,32,0.9)`.
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1`.
-
-```typescript
-barcodeLineWidth: number
-```
-
-
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0,0,0,0.5)`.
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254,142,20)`.
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2`.
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID`: specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if(cameras.length){
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = await scanner.getResolution();
-console.log(rsl.width + " x " + rsl.height);
-```
-
-
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width`: specifies the horizontal resolution.
-`height`: specifies the vertical resolution.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints`: specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({ video: {width: {ideal: 1280}, height: {ideal: 720}, facingMode: {ideal: 'environment'}} });
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## openVideo
-
-Binds UI and opens the camera to show the video stream.
-
-```typescript
-openVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.8.7/dist/dbr.scanner.html");
-await scanner.openVideo(); // The video will start playing but it may not be visible on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## showVideo
-
-Similar to [openVideo](#openvideo) but will also show the UI Element if it is hidden.
-
-```typescript
-showVideo(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.8.7/dist/dbr.scanner.html");
-await scanner.showVideo(); // The video will start playing and show up on the page
-console.log(await scanner.decodeCurrentFrame());
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onplayed = rsl=>{ console.log(rsl.width+'x'+rsl.height) };
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1}
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The current values for each constrainable property of the current camera
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate`: specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur`: specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation`: specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-
-## setZoom
-
-Sets current zoom value.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue`: specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v9.0.0.md b/programming-old/javascript/api-reference/BarcodeScanner-v9.0.0.md
deleted file mode 100644
index be77a592..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v9.0.0.md
+++ /dev/null
@@ -1,1112 +0,0 @@
----
-layout: default-layout
-title: v9.0.0 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v9.0.0.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v9.0.0.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.ui.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUniqueRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext()](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-
-### Basic Interactions
-
-| API Name | Description |
-|---|---|
-| [show()](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide()](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [open()](#open) | Binds UI, opens the camera and starts decoding. |
-| [close()](#close) | Stops decoding, releases camera and unbinds UI. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement()](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement()](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [getAllCameras()](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera()](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera()](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution()](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution()](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings()](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings()](#updatevideosettings) | Changes the video input. |
-
-### Video Decoding Process Control
-
-| API Name | Description |
-|---|---|
-| [play()](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pauseScan()](#pausescan) | Pauses the decoding process. |
-| [resumeScan()](#resumescan) | Resumes the decoding process. |
-| [pause()](#pause) | Pauses the video without releasing the camera. |
-| [stop()](#stop) | Stops the video and releases the camera. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities()](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings()](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate()](#setframerate) | Adjusts the frame rate. |
-| [getFrameRate()](#getframerate) | Returns the real-time frame rate. |
-| [setColorTemperature()](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation()](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setFocus()](#setfocus) | Sets the focus mode and focus distance of the camera. |
-| [getFocus()](#getfocus) | Gets the focus mode and focus distance of the camera. |
-| [setZoom()](#setzoom) | Sets the zoom level of the camera. |
-| [turnOnTorch()](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch()](#turnofftorch) | Turns off the torch/flashlight. |
-
-### Inherited from the `BarcodeReader` Class
-
-#### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-#### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](./BarcodeReader.md#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](./BarcodeReader.md#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUniqueRead
-
-Specifies an event handler which fires when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## onFrameRead
-
-Specifies an event handler which fires after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-```typescript
-show(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-scanner.hide();
-```
-
-## open
-
-Binds UI, opens the camera and starts decoding.
-
-```typescript
-open(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-await scanner.close();
-```
-
-## close
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-close(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-scanner.close();
-```
-
-# pauseScan
-
-Pauses the decoding process.
-
-```typescript
-pauseScan(): void
-```
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera (mobile only) or select an existing image for barcode reading.
-
-Because the system camera of a mobile device can provide pictures with better quality, the API is useful when facing complex scenarios such as reading the dense PDF417 code on a driver license.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-If the browser does not support the `MediaDevices`/`getUserMedia` API, the `singleFrameMode` will be set as `true` automatically when the API `createInstance()` is called.
-
-```typescript
-singleFrameMode: boolean
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-if(didVideoStreamFailWhenReadingDriverLicenses){
- scanner.singleFrameMode = true;
- await scanner.show();
-}
-```
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-
-```
-
-```html
-
-
-```
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.0.0/dist/dbr.ui.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.9)` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0, 0, 0, 0.5)` .
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254, 142, 20)` .
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2` .
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID` : specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = scanner.getResolution();
-console.log(rsl[0] + " x " + rsl[1]);
-```
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width` : specifies the horizontal resolution.
-`height` : specifies the vertical resolution.
-
-> To speed up the barcode scanning, the image frames will be scaled down when it exceeds a size limit either horizontally or vertically. The limit is 2048 pixels on mobile devices and 4096 on other devices. Therefore, setting a very high resolution will not help with the scanning.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints` : specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({
- video: {
- width: {
- ideal: 1280
- },
- height: {
- ideal: 720
- },
- facingMode: {
- ideal: 'environment'
- }
- }
-});
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onplayed = rsl => {
- console.log(rsl.width + 'x' + rsl.height)
-};
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1},
- zoom: {max: 800, min: 100, step: 100},
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Return value**
-
-The current values for each constrainable property of the current camera in the form of a [MediaTrackSettings](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings) object.
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640,
- zoom: 100,
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate` : specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFrameRate
-
-Returns the real-time frame rate.
-
-```typescript
-getFrameRate(): number;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The calculated real-time frame rate.
-
-**Code Snippet**
-
-```js
-await scanner.getFrameRate();
-```
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur` : specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation` : specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFocus
-
-Sets the focus mode and focus distance of the camera.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFocus(mode: string, distance?: number): Promise;
-```
-
-**Parameters**
-
-`mode` : specifies the focus mode, the available values include `continuous` and `manual` .
-`distance` : specifies the focus distance, only required when the `mode` is set to `manual` . Use [getCapabilities](#getcapabilities) to get the allowed value range.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFocus("manual", 400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocus
-
-Gets the focus mode and the focus distance.
-
-```typescript
-getFocus(): {mode: string, distance?: number};
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.getFocus();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setZoom
-
-Sets current zoom value.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue` : specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight if the current camera supports it.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v9.0.2.md b/programming-old/javascript/api-reference/BarcodeScanner-v9.0.2.md
deleted file mode 100644
index 7366352f..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v9.0.2.md
+++ /dev/null
@@ -1,1151 +0,0 @@
----
-layout: default-layout
-title: v9.0.2 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v9.0.2.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v9.0.2.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.ui.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUniqueRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext()](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-
-### Basic Interactions
-
-| API Name | Description |
-|---|---|
-| [show()](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide()](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [open()](#open) | Binds UI, opens the camera and starts decoding. |
-| [close()](#close) | Stops decoding, releases camera and unbinds UI. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement()](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement()](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-| [setVideoFit()](#setvideofit) | Sets the `object-fit` CSS property of the video element. |
-| [ifShowScanRegionMask](#ifshowscanregionmask) | Whether to show or hide the scan region mask. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [getAllCameras()](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera()](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera()](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution()](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution()](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings()](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings()](#updatevideosettings) | Changes the video input. |
-
-### Video Decoding Process Control
-
-| API Name | Description |
-|---|---|
-| [play()](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pauseScan()](#pausescan) | Pauses the decoding process. |
-| [resumeScan()](#resumescan) | Resumes the decoding process. |
-| [pause()](#pause) | Pauses the video without releasing the camera. |
-| [stop()](#stop) | Stops the video and releases the camera. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities()](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings()](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate()](#setframerate) | Adjusts the frame rate. |
-| [getFrameRate()](#getframerate) | Returns the real-time frame rate. |
-| [setColorTemperature()](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation()](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setFocus()](#setfocus) | Sets the focus mode and focus distance of the camera. |
-| [getFocus()](#getfocus) | Gets the focus mode and focus distance of the camera. |
-| [setZoom()](#setzoom) | Sets the zoom level of the camera. |
-| [turnOnTorch()](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch()](#turnofftorch) | Turns off the torch/flashlight. |
-
-### Inherited from the `BarcodeReader` Class
-
-#### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-#### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](./BarcodeReader.md#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](./BarcodeReader.md#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUniqueRead
-
-Specifies an event handler which fires when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## onFrameRead
-
-Specifies an event handler which fires after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-```typescript
-show(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-scanner.hide();
-```
-
-## open
-
-Binds UI, opens the camera and starts decoding.
-
-```typescript
-open(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-await scanner.close();
-```
-
-## close
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-close(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-scanner.close();
-```
-
-# pauseScan
-
-Pauses the decoding process.
-
-```typescript
-pauseScan(): void
-```
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera (mobile only) or select an existing image for barcode reading.
-
-Because the system camera of a mobile device can provide pictures with better quality, the API is useful when facing complex scenarios such as reading the dense PDF417 code on a driver license.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-If the browser does not support the `MediaDevices`/`getUserMedia` API, the `singleFrameMode` will be set as `true` automatically when the API `createInstance()` is called.
-
-```typescript
-singleFrameMode: boolean
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-if(didVideoStreamFailWhenReadingDriverLicenses){
- scanner.singleFrameMode = true;
- await scanner.show();
-}
-```
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-```
-
-```html
-
-
-```
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.0.2/dist/dbr.ui.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.9)` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0, 0, 0, 0.5)` .
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254, 142, 20)` .
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2` .
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## setVideoFit
-
-Sets the `object-fit` CSS property of the video element.
-
-```typescript
-setVideoFit(objectFit: string): void;
-```
-
-**Parameters**
-
-`objectFit` : specify the new fit type. At present, only "cover" and "contain" are allowed. Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```js
-scanner.setVideoFit("cover");
-```
-
-## ifShowScanRegionMask
-
-Whether to show or hide the scan region mask.
-
-```typescript
-ifShowScanRegionMask: boolean;
-```
-
-**Default value**
-
-`true`
-
-**Code Snippet**
-
-```js
-scanner.ifShowScanRegionMask = false;
-```
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID` : specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = scanner.getResolution();
-console.log(rsl[0] + " x " + rsl[1]);
-```
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width` : specifies the horizontal resolution.
-`height` : specifies the vertical resolution.
-
-> To speed up the barcode scanning, the image frames will be scaled down when it exceeds a size limit either horizontally or vertically. The limit is 2048 pixels on mobile devices and 4096 on other devices. Therefore, setting a very high resolution will not help with the scanning.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints` : specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({
- video: {
- width: {
- ideal: 1280
- },
- height: {
- ideal: 720
- },
- facingMode: {
- ideal: 'environment'
- }
- }
-});
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onPlayed = rsl => {
- console.log(rsl.width + 'x' + rsl.height)
-};
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1},
- zoom: {max: 800, min: 100, step: 100},
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Return value**
-
-The current values for each constrainable property of the current camera in the form of a [MediaTrackSettings](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings) object.
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640,
- zoom: 100,
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate` : specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFrameRate
-
-Returns the real-time frame rate.
-
-```typescript
-getFrameRate(): number;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The calculated real-time frame rate.
-
-**Code Snippet**
-
-```js
-await scanner.getFrameRate();
-```
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur` : specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation` : specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFocus
-
-Sets the focus mode and focus distance of the camera.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFocus(mode: string, distance?: number): Promise;
-```
-
-**Parameters**
-
-`mode` : specifies the focus mode, the available values include `continuous` and `manual` .
-`distance` : specifies the focus distance, only required when the `mode` is set to `manual` . Use [getCapabilities](#getcapabilities) to get the allowed value range.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFocus("manual", 400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocus
-
-Gets the focus mode and the focus distance.
-
-```typescript
-getFocus(): {mode: string, distance?: number};
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An object describing the current camera's focus properties "mode" and "distance". If `mode` is `continuous`, `distance` has no meaning and is omitted from the object.
-
-**Code Snippet**
-
-```js
-await scanner.getFocus();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setZoom
-
-Sets current zoom value.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue` : specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight if the current camera supports it.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v9.2.13.md b/programming-old/javascript/api-reference/BarcodeScanner-v9.2.13.md
deleted file mode 100644
index ea863256..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v9.2.13.md
+++ /dev/null
@@ -1,1233 +0,0 @@
----
-layout: default-layout
-title: v9.2.13 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v9.2.13.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v9.2.13.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.ui.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/#customize-the-ui).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUniqueRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext()](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-
-### Basic Interactions
-
-| API Name | Description |
-|---|---|
-| [show()](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide()](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [open()](#open) | Binds UI, opens the camera and starts decoding. |
-| [close()](#close) | Stops decoding, releases camera and unbinds UI. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement()](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement()](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-| [setVideoFit()](#setvideofit) | Sets the `object-fit` CSS property of the video element. |
-| [ifShowScanRegionMask](#ifshowscanregionmask) | Whether to show or hide the scan region mask. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [ifSkipCameraInspection](#ifskipcamerainspection) | Returns or sets whether to skip camera inspection at initialization to save time. |
-| [ifSaveLastUsedCamera](#ifsavelastusedcamera) | Returns or sets whether to save the last used camera and resolution. |
-| [getAllCameras()](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera()](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera()](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution()](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution()](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings()](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings()](#updatevideosettings) | Changes the video input. |
-| [onWarning](#onwarning) | A callback which is triggered when the resolution is not ideal (<720P). |
-
-### Video Decoding Process Control
-
-| API Name | Description |
-|---|---|
-| [play()](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pauseScan()](#pausescan) | Pauses the decoding process. |
-| [resumeScan()](#resumescan) | Resumes the decoding process. |
-| [pause()](#pause) | Pauses the video without releasing the camera. |
-| [stop()](#stop) | Stops the video and releases the camera. |
-| [videoSrc](#videosrc) | Sets or returns the source of the video. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities()](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings()](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate()](#setframerate) | Adjusts the frame rate. |
-| [getFrameRate()](#getframerate) | Returns the real-time frame rate. |
-| [setColorTemperature()](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation()](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setFocus()](#setfocus) | Sets the focus mode and focus distance of the camera. |
-| [getFocus()](#getfocus) | Gets the focus mode and focus distance of the camera. |
-| [setZoom()](#setzoom) | Sets the zoom level of the camera. |
-| [turnOnTorch()](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch()](#turnofftorch) | Turns off the torch/flashlight. |
-
-### Inherited from the `BarcodeReader` Class
-
-#### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-#### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](./BarcodeReader.md#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](./BarcodeReader.md#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUniqueRead
-
-Specifies an event handler which fires when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## onFrameRead
-
-Specifies an event handler which fires after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-> If the UI doesn't exist in the DOM tree, it is appended in the DOM first and then shown. If the UI already exists in the DOM tree but is hidden, it'll be shown.
-
-```typescript
-show(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-scanner.hide();
-```
-
-## open
-
-Binds UI, opens the camera and starts decoding.
-
-> This method does not change the original state of the UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-```typescript
-open(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-await scanner.close();
-```
-
-## close
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-close(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-scanner.close();
-```
-
-## pauseScan
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScan(options?: object): void;
-```
-
-**Parameters**
-
-`options`: Options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera (mobile only) or select an existing image for barcode reading.
-
-Because the system camera of a mobile device can provide pictures with better quality, the API is useful when facing complex scenarios such as reading the dense PDF417 code on a driver license.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-If the browser does not support the `MediaDevices`/`getUserMedia` API, the `singleFrameMode` will be set as `true` automatically when the API `createInstance()` is called.
-
-```typescript
-singleFrameMode: boolean
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-if(didVideoStreamFailWhenReadingDriverLicenses){
- scanner.singleFrameMode = true;
- await scanner.show();
-}
-```
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## getUIElement
-
-Returns the HTML element that is used by the [BarcodeScanner](#barcodescanner) instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-## setUIElement
-
-Specifies an HTML element for the [BarcodeScanner](#barcodescanner) instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/#customize-the-ui).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element or the element url.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-
-```
-
-```html
-
-
-```
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.13/dist/dbr.ui.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.9)` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0, 0, 0, 0.5)` .
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254, 142, 20)` .
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2` .
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## setVideoFit
-
-Sets the `object-fit` CSS property of the video element.
-
-```typescript
-setVideoFit(objectFit: string): void;
-```
-
-**Parameters**
-
-`objectFit` : specify the new fit type. At present, only "cover" and "contain" are allowed. Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```js
-scanner.setVideoFit("cover");
-```
-
-## ifShowScanRegionMask
-
-Whether to show or hide the scan region mask.
-
-```typescript
-ifShowScanRegionMask: boolean;
-```
-
-**Default value**
-
-`true`
-
-**Code Snippet**
-
-```js
-scanner.ifShowScanRegionMask = false;
-```
-
-## ifSkipCameraInspection
-
-Returns or sets whether to skip camera inspection at initialization to save time. Note that if a previously used camera is already available in the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), the inspection is skipped automatically. Read more on [ifSaveLastUsedCamera](#ifsavelastusedcamera).
-
-```typescript
-ifSkipCameraInspection: boolean;
-```
-
-## ifSaveLastUsedCamera
-
-Returns or sets whether to save the last used camera and resolution. This feature makes use of the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) of the browser.
-
-> NOTE
->
-> This feature only works on mainstream browsers like Chrome, Firefox and Safari. Other browsers may change the device IDs dynamically thus making it impossible to track the camera.
-
-```typescript
-ifSaveLastUsedCamera: boolean;
-```
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-> If called before `open()` or `show()`, the selected camera will be used. Otherwise, the system will decide which one to use.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID` : specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = scanner.getResolution();
-console.log(rsl[0] + " x " + rsl[1]);
-```
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-> If called before `open()` or `show()`, the camera will use the set resolution when it opens. Otherwise, the default resolution is used, which is 1280 x 720 on mobile devices or 1920 x 1080 on desktop.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width` : specifies the horizontal resolution.
-
-`height` : specifies the vertical resolution.
-
-> To speed up the barcode scanning, the image frames will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints` : specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({
- video: {
- width: {
- ideal: 1280
- },
- height: {
- ideal: 720
- },
- facingMode: {
- ideal: 'environment'
- }
- }
-});
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onWarning
-
-A callback which is triggered when the resolution is not ideal (<720P).
-
-In this case, the warning is:
-
-```js
-{
- id: 3,
- message: "Camera resolution too low, please use a higher resolution (720P or better)."
-}
-```
-
-**Code Snippet**
-
-```js
-const scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onWarning = warning => console.log(warning.message);
-```
-
-**See Also**
-
-[onWarning](interface/warning.md)
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onPlayed = rsl => {
- console.log(rsl.width + 'x' + rsl.height)
-};
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-## videoSrc
-
-Sets or returns the source of the video.
-
-> You can use this property to specify an existing video as the source to play which will be processed the same way as the video feed from a live camera.
-
-```typescript
-videoSrc: string | MediaStream | MediaSource | Blob;
-```
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1},
- zoom: {max: 800, min: 100, step: 100},
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Return value**
-
-The current values for each constrainable property of the current camera in the form of a [MediaTrackSettings](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings) object.
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640,
- zoom: 100,
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate` : specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFrameRate
-
-Returns the real-time frame rate.
-
-```typescript
-getFrameRate(): number;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The calculated real-time frame rate.
-
-**Code Snippet**
-
-```js
-await scanner.getFrameRate();
-```
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur` : specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation` : specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFocus
-
-Sets the focus mode and focus distance of the camera.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFocus(mode: string, distance?: number): Promise;
-```
-
-**Parameters**
-
-`mode` : specifies the focus mode, the available values include `continuous` and `manual` .
-`distance` : specifies the focus distance, only required when the `mode` is set to `manual` . Use [getCapabilities](#getcapabilities) to get the allowed value range.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFocus("manual", 400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocus
-
-Gets the focus mode and the focus distance.
-
-```typescript
-getFocus(): {mode: string, distance?: number};
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An object describing the current camera's focus properties "mode" and "distance". If `mode` is `continuous`, `distance` has no meaning and is omitted from the object.
-
-**Code Snippet**
-
-```js
-await scanner.getFocus();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setZoom
-
-Sets current zoom value.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue` : specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight if the current camera supports it.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v9.3.1.md b/programming-old/javascript/api-reference/BarcodeScanner-v9.3.1.md
deleted file mode 100644
index 7050efac..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v9.3.1.md
+++ /dev/null
@@ -1,1260 +0,0 @@
----
-layout: default-layout
-title: v9.3.1 BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v9.3.1.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v9.3.1.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.ui.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/?ver=latest#customize-the-ui-optional).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUniqueRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-|---|---|
-| [createInstance()](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext()](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-|---|---|
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-
-### Basic Interactions
-
-| API Name | Description |
-|---|---|
-| [show()](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide()](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [open()](#open) | Binds UI, opens the camera and starts decoding. |
-| [close()](#close) | Stops decoding, releases camera and unbinds UI. |
-
-### Scan Settings
-
-| API Name | Description |
-|---|---|
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-|---|---|
-| [getUIElement()](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement()](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [barcodeFillStyleBeforeVerification](#barcodefillstylebeforeverification) | Specifies the color used inside the shape which highlights a found linear barcode which has not been verified. |
-| [barcodeStrokeStyleBeforeVerification](#barcodestrokestylebeforeverification) | Specifies the color used to paint the outline of the shape which highlights a found linear barcode which has not been verified. |
-| [barcodeLineWidthBeforeVerification](#barcodelinewidthbeforeverification) | Specifies the line width of the outline of the shape which highlights a found linear barcode which has not been verified. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-| [setVideoFit()](#setvideofit) | Sets the `object-fit` CSS property of the video element. |
-| [ifShowScanRegionMask](#ifshowscanregionmask) | Whether to show or hide the scan region mask. |
-
-### Camera Control
-
-| API Name | Description |
-|---|---|
-| [ifSkipCameraInspection](#ifskipcamerainspection) | Returns or sets whether to skip camera inspection at initialization to save time. |
-| [ifSaveLastUsedCamera](#ifsavelastusedcamera) | Returns or sets whether to save the last used camera and resolution. |
-| [getAllCameras()](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera()](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera()](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution()](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution()](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings()](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings()](#updatevideosettings) | Changes the video input. |
-| [onWarning](#onwarning) | A callback which is triggered when the resolution is not ideal (< 720P). |
-
-### Video Decoding Process Control
-
-| API Name | Description |
-|---|---|
-| [play()](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pauseScan()](#pausescan) | Pauses the decoding process. |
-| [resumeScan()](#resumescan) | Resumes the decoding process. |
-| [pause()](#pause) | Pauses the video without releasing the camera. |
-| [stop()](#stop) | Stops the video and releases the camera. |
-| [videoSrc](#videosrc) | Sets or returns the source of the video. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-|---|---|
-| [getCapabilities()](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings()](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [setFrameRate()](#setframerate) | Adjusts the frame rate. |
-| [getFrameRate()](#getframerate) | Returns the real-time frame rate. |
-| [setColorTemperature()](#setcolortemperature) | Adjusts the color temperature. |
-| [setExposureCompensation()](#setexposurecompensation) | Sets the exposure compensation index. |
-| [setFocus()](#setfocus) | Sets the focus mode and focus distance of the camera. |
-| [getFocus()](#getfocus) | Gets the focus mode and focus distance of the camera. |
-| [setZoom()](#setzoom) | Sets the zoom level of the camera. |
-| [turnOnTorch()](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch()](#turnofftorch) | Turns off the torch/flashlight. |
-
-### Inherited from the `BarcodeReader` Class
-
-#### Change Settings
-
-| API Name | Description |
-|---|---|
-| [getRuntimeSettings()](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-#### Auxiliary
-
-| API Name | Description |
-|---|---|
-| [ifSaveOriginalImageInACanvas](./BarcodeReader.md#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](./BarcodeReader.md#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUniqueRead
-
-Specifies an event handler which fires when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## onFrameRead
-
-Specifies an event handler which fires after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-> If the UI doesn't exist in the DOM tree, it is appended in the DOM first and then shown. If the UI already exists in the DOM tree but is hidden, it'll be shown.
-
-```typescript
-show(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-scanner.hide();
-```
-
-## open
-
-Binds UI, opens the camera and starts decoding.
-
-> This method does not change the original state of the UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-```typescript
-open(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-await scanner.close();
-```
-
-## close
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-close(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-scanner.close();
-```
-
-## pauseScan
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScan(options?: object): void;
-```
-
-**Parameters**
-
-`options`: Options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-## singleFrameMode
-
-Returns or sets the status of the single-frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera (mobile only) or select an existing image for barcode reading.
-
-Because the system camera of a mobile device can provide pictures with better quality, the API is useful when facing complex scenarios such as reading the dense PDF417 code on a driver license.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing.
-
-If the browser does not support the `MediaDevices`/`getUserMedia` API, the `singleFrameMode` will be set as `true` automatically when the API `createInstance()` is called.
-
-```typescript
-singleFrameMode: boolean
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-if(didVideoStreamFailWhenReadingDriverLicenses){
- scanner.singleFrameMode = true;
- await scanner.show();
-}
-```
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## getUIElement
-
-Returns the HTML element that is used by the `BarcodeScanner` instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-## setUIElement
-
-Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/?ver=latest#customize-the-ui-optional).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element or the element url.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-
-```
-
-```html
-
-
-```
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.3.1/dist/dbr.ui.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.9)` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## barcodeFillStyleBeforeVerification
-
-Specifies the color used inside the shape which highlights a found linear barcode which has not been verified. The default value is `rgba(248, 252, 0, 0.2)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyleBeforeVerification
-
-Specifies the color used to paint the outline of the shape which highlights a found linear barcode which has not been verified. The default value is `transparent` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidthBeforeVerification
-
-Specifies the line width of the outline of the shape which highlights a found linear barcode which has not been verified. The default value is `2` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0, 0, 0, 0.5)` .
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254, 142, 20)` .
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2` .
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## setVideoFit
-
-Sets the `object-fit` CSS property of the video element.
-
-```typescript
-setVideoFit(objectFit: string): void;
-```
-
-**Parameters**
-
-`objectFit` : specify the new fit type. At present, only "cover" and "contain" are allowed. Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```js
-scanner.setVideoFit("cover");
-```
-
-## ifShowScanRegionMask
-
-Whether to show or hide the scan region mask.
-
-```typescript
-ifShowScanRegionMask: boolean;
-```
-
-**Default value**
-
-`true`
-
-**Code Snippet**
-
-```js
-scanner.ifShowScanRegionMask = false;
-```
-
-## ifSkipCameraInspection
-
-Returns or sets whether to skip camera inspection at initialization to save time. Note that if a previously used camera is already available in the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), the inspection is skipped automatically. Read more on [ifSaveLastUsedCamera](#ifsavelastusedcamera).
-
-```typescript
-ifSkipCameraInspection: boolean;
-```
-
-## ifSaveLastUsedCamera
-
-Returns or sets whether to save the last used camera and resolution. This feature makes use of the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) of the browser.
-
-> NOTE
->
-> This feature only works on mainstream browsers like Chrome, Firefox and Safari. Other browsers may change the device IDs dynamically thus making it impossible to track the camera.
-
-```typescript
-ifSaveLastUsedCamera: boolean;
-```
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-> If called before `open()` or `show()`, the selected camera will be used. Otherwise, the system will decide which one to use.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID` : specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = scanner.getResolution();
-console.log(rsl[0] + " x " + rsl[1]);
-```
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-> If called before `open()` or `show()`, the camera will use the set resolution when it opens. Otherwise, the default resolution is used, which is 1280 x 720 on mobile devices or 1920 x 1080 on desktop.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width` : specifies the horizontal resolution.
-
-`height` : specifies the vertical resolution.
-
-> To speed up the barcode scanning, the image frames will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints` : specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({
- video: {
- width: {
- ideal: 1280
- },
- height: {
- ideal: 720
- },
- facingMode: {
- ideal: 'environment'
- }
- }
-});
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onWarning
-
-A callback which is triggered when the resolution is not ideal (< 720P).
-
-In this case, the warning is:
-
-```js
-{
- id: 3,
- message: "Camera resolution too low, please use a higher resolution (720P or better)."
-}
-```
-
-**Code Snippet**
-
-```js
-const scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onWarning = warning => console.log(warning.message);
-```
-
-**See Also**
-
-[onWarning](interface/warning.md)
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onPlayed = rsl => {
- console.log(rsl.width + 'x' + rsl.height)
-};
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-## videoSrc
-
-Sets or returns the source of the video.
-
-> You can use this property to specify an existing video as the source to play which will be processed the same way as the video feed from a live camera.
-
-```typescript
-videoSrc: string | MediaStream | MediaSource | Blob;
-```
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1},
- zoom: {max: 800, min: 100, step: 100},
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Return value**
-
-The current values for each constrainable property of the current camera in the form of a [MediaTrackSettings](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings) object.
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640,
- zoom: 100,
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate` : specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFrameRate
-
-Returns the real-time frame rate.
-
-```typescript
-getFrameRate(): number;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The calculated real-time frame rate.
-
-**Code Snippet**
-
-```js
-await scanner.getFrameRate();
-```
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur` : specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation` : specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFocus
-
-Sets the focus mode and focus distance of the camera.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFocus(mode: string, distance?: number): Promise;
-```
-
-**Parameters**
-
-`mode` : specifies the focus mode, the available values include `continuous` and `manual` .
-`distance` : specifies the focus distance, only required when the `mode` is set to `manual` . Use [getCapabilities](#getcapabilities) to get the allowed value range.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFocus("manual", 400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocus
-
-Gets the focus mode and the focus distance.
-
-```typescript
-getFocus(): {mode: string, distance?: number};
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An object describing the current camera's focus properties "mode" and "distance". If `mode` is `continuous`, `distance` has no meaning and is omitted from the object.
-
-**Code Snippet**
-
-```js
-await scanner.getFocus();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setZoom
-
-Sets current zoom value.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue` : specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## turnOnTorch
-
-Turns on the torch/flashlight if the current camera supports it.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOnTorch();
-```
-
-**See also**
-
-* [turnOffTorch](#turnofftorch)
-* [getCapabilities](#getcapabilities)
-
-## turnOffTorch
-
-Turns off the torch/flashlight.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-turnOffTorch(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.turnOffTorch();
-```
-
-**See also**
-
-* [turnOnTorch](#turnontorch)
-* [getCapabilities](#getcapabilities)
diff --git a/programming-old/javascript/api-reference/BarcodeScanner-v9.6.10.md b/programming-old/javascript/api-reference/BarcodeScanner-v9.6.10.md
deleted file mode 100644
index 4c10ce6f..00000000
--- a/programming-old/javascript/api-reference/BarcodeScanner-v9.6.10.md
+++ /dev/null
@@ -1,1626 +0,0 @@
----
-layout: default-layout
-title: BarcodeScanner - Dynamsoft Barcode Reader JavaScript Edition API
-description: This page shows the BarcodeScanner class of Dynamsoft Barcode Reader JavaScript SDK v9.6.10.
-keywords: BarcodeScanner, BarcodeReader, api reference, javascript, js
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: BarcodeScanner
-permalink: /programming/javascript/api-reference/BarcodeScanner-v9.6.10.html
----
-
-# BarcodeScanner for Video
-
-A barcode scanner object gets access to a camera via the [MediaDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices) interface, then uses its built-in UI to show the camera input and perform continuous barcode scanning on the incoming frames.
-
-The default built-in UI of each barcode scanner is defined in the file "dbr.ui.html". If used directly, the UI will fit the entire page and sit on top. There are a few ways to customize it, read more on how to [Customize the UI](../user-guide/?ver=latest#customize-the-ui-optional).
-
-Although a barcode scanner is designed to scan barcodes from a video input, it also supports a special mode called [singleFrameMode](#singleframemode) which allows the user to select a still image or take a shot with the mobile camera for barcode scanning.
-
-The `BarcodeScanner` is a child class of [BarcodeReader](./BarcodeReader.md) and inherits all its methods and properties which will not be covered in this article.
-
-The following code snippet shows the basic usage of the `BarcodeScanner` class.
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onUniqueRead = txt => console.log(txt);
-await scanner.show();
-```
-
-## API Index
-
-### Create and Destroy Instances
-
-| API Name | Description |
-| ------------------------------------------- | -------------------------------------------------- |
-| [createInstance()](#createinstance) | Creates a `BarcodeScanner` instance. |
-| [destroyContext()](#destroycontext) | Destroys the `BarcodeScanner` instance. |
-| [isContextDestroyed()](#iscontextdestroyed) | Indicates whether the instance has been destroyed. |
-
-### Decode Barcodes
-
-| API Name | Description |
-| ----------------------------- | -------------------------------------------------------------------- |
-| [onUniqueRead](#onuniqueread) | This event is triggered when a new, unduplicated barcode is found. |
-| [onFrameRead](#onframeread) | This event is triggered after the library finishes scanning a frame. |
-
-### Basic Interactions
-
-| API Name | Description |
-| ------------------- | --------------------------------------------------------- |
-| [show()](#show) | Binds and shows UI, opens the camera and starts decoding. |
-| [hide()](#hide) | Stops decoding, releases camera and unbinds UI. |
-| [open()](#open) | Binds UI, turns on the camera and starts decoding. |
-| [close()](#close) | Stops decoding, releases camera and unbinds UI. |
-| [isOpen()](#isopen) | Indicates whether the camera is turned on. |
-
-### Scan Settings
-
-| API Name | Description |
-| ------------------------------------------- | ------------------------------------------------------- |
-| [singleFrameMode](#singleframemode) | Returns or sets whether to enable the singe-frame mode. |
-| [getScanSettings()](#getscansettings) | Returns the current scan settings. |
-| [updateScanSettings()](#updatescansettings) | Changes scan settings with the object passed in. |
-
-### UI Control
-
-| API Name | Description |
-| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
-| [getUIElement()](#getuielement) | Returns the HTML element that is used by the `BarcodeScanner` instance. |
-| [setUIElement()](#setuielement) | Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. |
-| [defaultUIElementURL](#defaultuielementurl) | Returns or sets the URL of the .html file that defines the default UI Element. |
-| [barcodeFillStyle](#barcodefillstyle) | Specifies the color used inside the shape which highlights a found barcode. |
-| [barcodeStrokeStyle](#barcodestrokestyle) | Specifies the color used to paint the outline of the shape which highlights a found barcode. |
-| [barcodeLineWidth](#barcodelinewidth) | Specifies the line width of the outline of the shape which highlights a found barcode. |
-| [regionMaskFillStyle](#regionmaskfillstyle) | Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. |
-| [regionMaskStrokeStyle](#regionmaskstrokestyle) | Specifies the color used to paint the outline of the scanning region. |
-| [barcodeFillStyleBeforeVerification](#barcodefillstylebeforeverification) | Specifies the color used inside the shape which highlights a found linear barcode which has not been verified. |
-| [barcodeStrokeStyleBeforeVerification](#barcodestrokestylebeforeverification) | Specifies the color used to paint the outline of the shape which highlights a found linear barcode which has not been verified. |
-| [barcodeLineWidthBeforeVerification](#barcodelinewidthbeforeverification) | Specifies the line width of the outline of the shape which highlights a found linear barcode which has not been verified. |
-| [regionMaskLineWidth](#regionmasklinewidth) | Specifies the width of the outline of the scanning region. |
-| [setVideoFit()](#setvideofit) | Sets the `object-fit` CSS property of the video element. |
-| [ifShowScanRegionMask](#ifshowscanregionmask) | Whether to show or hide the scan region mask. |
-| [showTip()](#showtip) | Shows a Tip message. |
-| [hideTip()](#hidetip) | Hides the Tip message. |
-| [updateTipMessage()](#updatetipmessage) | Changes the Tip message. |
-| [onTipSuggested()](#ontipsuggested) | An event that gets triggered whenever a Tip is suggested. |
-
-### Camera Control
-
-| API Name | Description |
-| ------------------------------------------------- | --------------------------------------------------------------------------------- |
-| [ifSkipCameraInspection](#ifskipcamerainspection) | Returns or sets whether to skip camera inspection at initialization to save time. |
-| [ifSaveLastUsedCamera](#ifsavelastusedcamera) | Returns or sets whether to save the last used camera and resolution. |
-| [getAllCameras()](#getallcameras) | Returns infomation of all available cameras on the device. |
-| [getCurrentCamera()](#getcurrentcamera) | Returns information about the current camera. |
-| [setCurrentCamera()](#setcurrentcamera) | Chooses a camera as the video source. |
-| [getResolution()](#getresolution) | Returns the resolution of the current video input. |
-| [setResolution()](#setresolution) | Sets the resolution of the current video input. |
-| [getVideoSettings()](#getvideosettings) | Returns the current video settings. |
-| [updateVideoSettings()](#updatevideosettings) | Changes the video input. |
-| [onWarning](#onwarning) | A callback which is triggered when the resolution is not ideal (< 720P). |
-| [testCameraAccess](#testcameraaccess) | Test whether there is an available camera. |
-
-### Video Decoding Process Control
-
-| API Name | Description |
-| --------------------------- | ------------------------------------------------------------- |
-| [play()](#play) | Play the video if it is already open but paused or stopped. |
-| [onPlayed](#onplayed) | This event is triggered when the video stream starts playing. |
-| [pauseScan()](#pausescan) | Pauses the decoding process. |
-| [resumeScan()](#resumescan) | Resumes the decoding process. |
-| [pause()](#pause) | Pauses the video without releasing the camera. |
-| [stop()](#stop) | Stops the video and releases the camera. |
-| [videoSrc](#videosrc) | Sets or returns the source of the video. |
-
-### Advanced Camera Control
-
-| API Name | Description |
-| ----------------------------------------------------- | --------------------------------------------------------------------------------- |
-| [getCapabilities()](#getcapabilities) | Inspects and returns the capabilities of the current camera. |
-| [getCameraSettings()](#getcamerasettings) | Returns the current values for each constrainable property of the current camera. |
-| [getFrameRate()](#getframerate) | Returns the real-time frame rate. |
-| [setFrameRate()](#setframerate) | Adjusts the frame rate. |
-| [turnOnTorch()](#turnontorch) | Turns on the torch/flashlight. |
-| [turnOffTorch()](#turnofftorch) | Turns off the torch/flashlight. |
-| [getZoomSettings()](#getzoomsettings) | Returns the zoom settings. |
-| [setZoom()](#setzoom) | Zooms the video stream. |
-| [resetZoom()](#resetzoom) | Resets the zoom level of the video. |
-| [getFocusSettings()](#getfocussettings) | Returns the focus settings. |
-| [setFocus()](#setfocus) | Sets how the camera focuses. |
-| [enableTapToFocus()](#enabletaptofocus) | Enables manual camera focus when clicking/tapping on the video. |
-| [disableTapToFocus()](#disabletaptofocus) | Disables manual camera focus when clicking/tapping on the video. |
-| [isTapToFocusEnabled()](#istaptofocusenabled) | Returns whether clicking/tapping on the video invokes the camera to focus. |
-| [getColorTemperature()](#getcolortemperature) | Returns the color temperature of the selected camera. |
-| [setColorTemperature()](#setcolortemperature) | Adjusts the color temperature of the selected camera. |
-| [getExposureCompensation()](#getexposurecompensation) | Returns the exposure compensation index of the selected camera. |
-| [setExposureCompensation()](#setexposurecompensation) | Sets the exposure compensation index of the selected camera. |
-
-### Inherited from the `BarcodeReader` Class
-
-#### Change Settings
-
-| API Name | Description |
-| ------------------------------------------------------------------- | ------------------------------------------------------------------ |
-| [getRuntimeSettings()](./BarcodeReader.md#getruntimesettings) | Returns the current runtime settings. |
-| [updateRuntimeSettings()](./BarcodeReader.md#updateruntimesettings) | Updates runtime settings with a given struct or a preset template. |
-| [resetRuntimeSettings()](./BarcodeReader.md#resetruntimesettings) | Resets all parameters to default values. |
-| [getModeArgument()](./BarcodeReader.md#getmodeargument) | Returns the argument value for the specified mode parameter. |
-| [setModeArgument()](./BarcodeReader.md#setmodeargument) | Sets the argument value for the specified mode parameter. |
-
-#### Auxiliary
-
-| API Name | Description |
-| ------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
-| [ifSaveOriginalImageInACanvas](./BarcodeReader.md#ifsaveoriginalimageinacanvas) | Whether to save the original image into a <canvas> element. |
-| [getOriginalImageInACanvas()](./BarcodeReader.md#getoriginalimageinacanvas) | Returns an `HTMLCanvasElement` that holds the original image. |
-
-## createInstance
-
-Creates a `BarcodeScanner` instance.
-
-```typescript
-static createInstance(): Promise
-```
-
-**Return value**
-
-A promise resolving to the created `BarcodeScanner` object.
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-```
-
-## destroyContext
-
-Destroys the `BarcodeScanner` instance. If your page needs to create a new instance from time to time, don't forget to destroy unused old instances.
-
-```typescript
-destroyContext(): void
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-// ... decode ...
-scanner.destroyContext();
-```
-
-## isContextDestroyed
-
-Returns whether the instance has been destroyed.
-
-```typescript
-isContextDestroyed(): boolean
-```
-
-## onUniqueRead
-
-Specifies an event handler which fires when a new, unduplicated barcode is found.
-
-The library keeps each barcode result (type and value) in the buffer for a period of time (can be set with [duplicateForgetTime](./interface/ScanSettings.md)) during which if a new result is an exact match, it's seen as a duplicate and will again be kept for that period of time while the old result is removed and so on.
-
-```typescript
-onUniqueRead: (txt: string, result: TextResult) => void
-```
-
-**Arguments**
-
-`txt` : a string that holds the barcode text.
-
-`result` : a `TextResult` object that contains more detailed info.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-}
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## onFrameRead
-
-Specifies an event handler which fires after the library finishes scanning a frame.
-
-```typescript
-onFrameRead: (results: TextResult[]) => void
-```
-
-**Arguments**
-
-`results` : a `TextResult` object that contains all the barcode results in this frame.
-
-**Code Snippet**
-
-```js
-scanner.onFrameRead = results => {
- for (let result of results) {
- console.log(result.barcodeText);
- }
-};
-```
-
-**See also**
-
-* [TextResult](./interface/TextResult.md)
-
-## show
-
-Binds and shows UI, opens the camera and starts decoding.
-
-> If the UI doesn't exist in the DOM tree, it is appended in the DOM first and then shown. If the UI already exists in the DOM tree but is hidden, it'll be shown.
-
-```typescript
-show(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.onUniqueRead = (txt, result) => {
- alert(txt);
- console.log(result);
-};
-await scanner.show();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## hide
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-hide(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.show();
-//...scan barcodes
-scanner.hide();
-```
-
-## open
-
-Binds UI, turns on the camera and starts decoding.
-
-> This method does not change the original state of the UI: if it doesn't exist in the DOM tree, nothing shows up on the page; if it exists in the DOM tree, it may or may not show up depending on its original state.
-
-```typescript
-open(): Promise
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-await scanner.close();
-```
-
-## close
-
-Stops decoding, releases camera and unbinds UI.
-
-```typescript
-close(): void
-```
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.open();
-//...scan barcodes
-scanner.close();
-```
-
-## isOpen
-
-Indicates whether the camera is turned on.
-
-```typescript
-isOpen(): boolean
-```
-
-**Return value**
-
-A boolean indicates whether the camera is turned on.
-
-## pauseScan
-
-Pause continuous scanning but keep the video stream.
-
-```typescript
-pauseScan(options?: object): void;
-```
-
-**Parameters**
-
-`options`: Options to configure how the pause works. At present, it only contains one property `keepResultsHighlighted` which, when set to **true**, will keep the barcodes found on the frame (at the time of the pause) highlighted.
-
-## resumeScan
-
-Resumes the decoding process.
-
-```typescript
-resumeScan(): void
-```
-
-## singleFrameMode
-
-Returns or sets the status of single frame mode. If enabled, the video input will not be played and the user can choose to take a picture with the system camera (mobile only) or select an existing image from the photo library for barcode reading.
-
-Because the system camera of a mobile device can provide pictures with better quality, the API is useful when facing complex scenarios such as reading the dense PDF417 code on a driver license.
-
-The single-frame mode can only be enabled or disabled before the video input starts playing (before `scanner.show()` is called).
-
-If the browser does not support the `MediaDevices`/`getUserMedia`, `singleFrameMode` will be set as `true` automatically when `createInstance()` is called.
-
-```typescript
-singleFrameMode: boolean
-```
-
-**Code Snippet**
-
-```js
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-if(didVideoStreamFailWhenReadingDriverLicenses){
- scanner.singleFrameMode = true;
- await scanner.show();
-}
-```
-
-## getScanSettings
-
-Returns the current scan settings.
-
-```typescript
-getScanSettings(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScanSettings` .
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## updateScanSettings
-
-Changes scan settings with the object passed in.
-
-```typescript
-updateScanSettings(settings: ScanSettings): Promise
-```
-
-**Parameters**
-
-`settings` : specifies the new scan settings.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-let scanSettings = await scanner.getScanSettings();
-scanSettings.intervalTime = 50;
-scanSettings.duplicateForgetTime = 1000;
-await scanner.updateScanSettings(scanSettings);
-```
-
-**See also**
-
-* [ScanSettings](./interface/ScanSettings.md)
-
-## getUIElement
-
-Returns the HTML element that is used by the `BarcodeScanner` instance.
-
-```typescript
-getUIElement(): HTMLElement
-```
-
-## setUIElement
-
-Specifies an HTML element for the `BarcodeScanner` instance to use as its UI. The structure inside the element determines the appearance of the UI. See more on [how to customize the UI](../user-guide/?ver=latest#customize-the-ui-optional).
-
-```typescript
-setUIElement(elementOrURL: HTMLElement | string): Promise
-```
-
-**Parameters**
-
-`elementOrURL` : specifies the element or the element url.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```html
-
-
-
-
-```
-
-```html
-
-
-```
-
-## defaultUIElementURL
-
-Returns or sets the URL of the *.html* file that defines the default UI Element. The URL can only be set before the API [createInstance](#createinstance) is called.
-
-```typescript
-static defaultUIElementURL: string
-```
-
-**Code Snippet**
-
-```js
-Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.6.10/dist/dbr.ui.html";
-let scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-await scanner.show();
-```
-
-## barcodeFillStyle
-
-Specifies the color used inside the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.3)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyle
-
-Specifies the color used to paint the outline of the shape which highlights a found barcode. The default value is `rgba(254, 180, 32, 0.9)` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidth
-
-Specifies the line width of the outline of the shape which highlights a found barcode. The default value is `1` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## barcodeFillStyleBeforeVerification
-
-Specifies the color used inside the shape which highlights a found linear barcode which has not been verified. The default value is `rgba(248, 252, 0, 0.2)` .
-
-```typescript
-barcodeFillStyle: string
-```
-
-## barcodeStrokeStyleBeforeVerification
-
-Specifies the color used to paint the outline of the shape which highlights a found linear barcode which has not been verified. The default value is `transparent` .
-
-```typescript
-barcodeStrokeStyle: string
-```
-
-## barcodeLineWidthBeforeVerification
-
-Specifies the line width of the outline of the shape which highlights a found linear barcode which has not been verified. The default value is `2` .
-
-```typescript
-barcodeLineWidth: number
-```
-
-## regionMaskFillStyle
-
-Specifies the color used in the square-loop shape between the actual scanning area and the boundary of the video input. This shape only appears when the barcode scanning is limited to a specified region. The default value is `rgba(0, 0, 0, 0.5)` .
-
-```typescript
-regionMaskFillStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskStrokeStyle
-
-Specifies the color used to paint the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `rgb(254, 142, 20)` .
-
-```typescript
-regionMaskStrokeStyle: string
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## regionMaskLineWidth
-
-Specifies the width of the outline of the scanning region. This outline only appears when the barcode scanning is limited to a specified region. The default value is `2` .
-
-```typescript
-regionMaskLineWidth: number
-```
-
-**See also**
-
-* [Read a specific area/region](../user-guide/advanced-usage.html#read-a-specific-arearegion)
-
-## setVideoFit
-
-Sets the `object-fit` CSS property of the video element.
-
-```typescript
-setVideoFit(objectFit: string): void;
-```
-
-**Parameters**
-
-`objectFit` : specify the new fit type. At present, only "cover" and "contain" are allowed. Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit).
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```js
-scanner.setVideoFit("cover");
-```
-
-## ifShowScanRegionMask
-
-Whether to show or hide the scan region mask.
-
-```typescript
-ifShowScanRegionMask: boolean;
-```
-
-**Default value**
-
-`true`
-
-**Code Snippet**
-
-```js
-scanner.ifShowScanRegionMask = false;
-```
-
-## showTip
-
-Shows a Tip message.
-
-```typescript
-showTip(x: number, y: number, width: number, initialMessage?: string, duration: number, autoShowSuggestedTip?: boolean) => void;
-```
-
-**Parameters**
-
-`x` , `y` : pecifies where to put the Tip message.
-`width` : specifies the width of the Tip message, wrapping if the message is too long.
-`initialMessage` : the initial message.
-`duration` : the time during which a Tip message is displayed. The duration is reset each time the message is updated.
-`autoShowSuggestedTip` : whether or not the Tip box is updated automatically when a tip is suggested. A tip is usually suggested by another SDK such as Dynamsoft Barcode Reader.
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```javascript
-scanner.showTip(500, 200, 500, "The camera is too far away, please move closer!", 3000, true);
-```
-
-## hideTip
-
-Hides the Tip message.
-
-```typescript
-hideTip(): void;
-```
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```javascript
-scanner.hideTip();
-```
-
-## updateTipMessage
-
-Changes the Tip message.
-
-```typescript
-updateTipMessage:(message: string) => void;
-```
-
-**Parameters**
-
-`message` : specifies a new message as the Tip.
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```javascript
-scanner.updateTipMessage("This is a new message!");
-```
-
-## onTipSuggested
-
-An event that gets triggered whenever a Tip is suggested.
-
-```typescript
-onTipSuggested: (occasion: string, message: string) => any;
-```
-
-**Arguments**
-
-`occasion` : specifies the occasion for the Tip.
-`message` : the Tip message for the occasion.
-
-**Code Snippet**
-
-```javascript
-scanner.onTipSuggested = (occasion, message) {
- console.log(message);
-}
-```
-
-## ifSkipCameraInspection
-
-Returns or sets whether to skip camera inspection at initialization to save time. Note that if a previously used camera is already available in the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), the inspection is skipped automatically. Read more on [ifSaveLastUsedCamera](#ifsavelastusedcamera).
-
-```typescript
-ifSkipCameraInspection: boolean;
-```
-
-## ifSaveLastUsedCamera
-
-Returns or sets whether to save the last used camera and resolution. This feature makes use of the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) of the browser.
-
-> NOTE
->
-> This feature only works on mainstream browsers like Chrome, Firefox and Safari. Other browsers may change the device IDs dynamically thus making it impossible to track the camera.
-
-```typescript
-ifSaveLastUsedCamera: boolean;
-```
-
-## getAllCameras
-
-Returns infomation of all available cameras on the device.
-
-```typescript
-getAllCameras(): Promise
-```
-
-**Return value**
-
-A promise resolving to an array of `VideoDeviceInfo` objects.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## getCurrentCamera
-
-Returns information about the current camera.
-
-```typescript
-getCurrentCamera(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `VideoDeviceInfo` object.
-
-**Code Snippet**
-
-```js
-let camera = await scanner.getCurrentCamera();
-```
-
-**See also**
-
-* [VideoDeviceInfo](./interface/VideoDeviceInfo.md)
-
-## setCurrentCamera
-
-Chooses a camera as the video source.
-
-> If called before `open()` or `show()`, the selected camera will be used. Otherwise, the system will decide which one to use.
-
-```typescript
-setCurrentCamera(deviceID: string): Promise
-```
-
-**Parameters**
-
-`deviceID` : specifies the camera.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-let cameras = await scanner.getAllCameras();
-if (cameras.length) {
- await scanner.setCurrentCamera(cameras[0]);
-}
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getResolution
-
-Returns the resolution of the current video input.
-
-```typescript
-getResolution(): number[]
-```
-
-**Return value**
-
-An array of two numbers representing the resolution.
-
-**Code Snippet**
-
-```js
-let rsl = scanner.getResolution();
-console.log(rsl[0] + " x " + rsl[1]);
-```
-
-## setResolution
-
-Sets the resolution of the current video input. If the specified resolution is not exactly supported, the closest resolution will be applied.
-
-> If called before `open()` or `show()`, the camera will use the set resolution when it opens. Otherwise, the default resolution is used, which is 1280 x 720 on mobile devices or 1920 x 1080 on desktop.
-
-```typescript
-setResolution(width: number, height: number): Promise
-```
-
-**Parameters**
-
-`width` : specifies the horizontal resolution.
-
-`height` : specifies the vertical resolution.
-
-> To speed up the barcode scanning, the image frames will be scaled down when it exceeds a size limit either horizontally or vertically.
->
-> * The limit is 2048 pixels on mobile devices and 4096 on other devices.
-> * If the template "dense" or "distance" is used, the limit is 4096 regardless of which device is used.
->
-> Therefore, setting a very high resolution will not help with the scanning.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.setResolution(width, height);
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## getVideoSettings
-
-Returns the current video settings.
-
-```typescript
-getVideoSettings(): MediaStreamConstraints
-```
-
-**Return value**
-
-A `MediaStreamConstraints` object.
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-
-## updateVideoSettings
-
-Changes the video input.
-
-```typescript
-updateVideoSettings(constraints: MediaStreamConstraints): Promise
-```
-
-**Parameters**
-
-`constraints` : specifies the new video settings.
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-await scanner.updateVideoSettings({
- video: {
- width: {
- ideal: 1280
- },
- height: {
- ideal: 720
- },
- facingMode: {
- ideal: 'environment'
- }
- }
-});
-```
-
-**See also**
-
-* [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints)
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onWarning
-
-A callback which is triggered when the resolution is not ideal (< 720P).
-
-In this case, the warning is:
-
-```js
-{
- id: 3,
- message: "Camera resolution too low, please use a higher resolution (720P or better)."
-}
-```
-
-**Code Snippet**
-
-```js
-const scanner = await Dynamsoft.DBR.BarcodeScanner.createInstance();
-scanner.onWarning = warning => console.log(warning.message);
-```
-
-**See Also**
-
-[onWarning](interface/warning.md)
-
-
-## testCameraAccess
-
-Test whether there is an available camera.
-
-```typescript
-static testCameraAccess(): Promise;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise resolving to a `CameraTestResponse` object.
-
-```typescript
-interface CameraTestResponse {
- readonly ok: boolean;
- readonly message: string;
-};
-```
-
-The possible responses are
-
-```json
-{
- ok: false,
- message: "Insecure context."
-}
-```
-
-```json
-{
- ok: false,
- message: "No camera detected."
-}
-```
-
-```json
-{
- ok: false,
- message: "No permission to access camera."
-}
-```
-
-```json
-{
- ok: false,
- message: "Some problem occurred which prevented the device from being used."
-}
-```
-
-```json
-{
- ok: false,
- message: "A hardware error occurred."
-}
-```
-
-```json
-{
- ok: false,
- message: "User media support is disabled."
-}
-```
-
-```json
-{
- ok: true,
- message: " Successfully accessed the camera."
-}
-```
-
-**Code Snippet**
-
-```javascript
-const testResponse = await Dynamsoft.DBR.BarcodeScanner.testCameraAccess();
-if (testResponse.ok) {
- console.log(testResponse.message);
-}
-```
-
-## play
-
-Play the video if it is already open but paused or stopped. If the video is already playing, it will start again.
-
-```typescript
-play(): Promise
-```
-
-**Return value**
-
-A promise resolving to a `ScannerPlayCallbackInfo` object.
-
-**Code Snippet**
-
-```js
-scanner.pause();
-//..doing other things without the video
-await scanner.play();
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## onPlayed
-
-This event is triggered when the video stream starts playing.
-
-```typescript
-event onPlayed: (info: ScannerPlayCallbackInfo) => void
-```
-
-**Arguments**
-
-info: a `ScannerPlayCallbackInfo` object which describes the resolution of the video input.
-
-**Code Snippet**
-
-```js
-scanner.onPlayed = rsl => {
- console.log(rsl.width + 'x' + rsl.height)
-};
-await scanner.show(); // or open(), play(), setCurrentCamera(), etc.
-```
-
-**See also**
-
-* [ScannerPlayCallbackInfo](./interface/ScannerPlayCallbackInfo.md)
-
-## pause
-
-Pauses the video without releasing the camera.
-
-```typescript
-pause(): void
-```
-
-## stop
-
-Stops the video and releases the camera.
-
-```typescript
-stop(): void
-```
-
-## videoSrc
-
-Sets or returns the source of the video.
-
-> You can use this property to specify an existing video as the source to play which will be processed the same way as the video feed from a live camera.
-
-```typescript
-videoSrc: string | MediaStream | MediaSource | Blob;
-```
-
-## getCapabilities
-
-Inspects and returns the capabilities of the current camera.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-getCapabilities(): MediaTrackCapabilities
-```
-
-**Return value**
-
-A `MediaTrackCapabilities` object which specifies the values or range of values for each constrainable property of the current camera.
-
-**Code Snippet**
-
-```js
-scanner.getCapabilities();
-/* Result sample
-{
- aspectRatio: {max: 1280, min: 0.001388888888888889},
- brightness: {max: 64, min: -64, step: 1},
- colorTemperature: {max: 6500, min: 2800, step: 10},
- contrast: {max: 95, min: 0, step: 1},
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: ["continuous", "manual"],
- exposureTime: {max: 10000, min: 39.0625, step: 39.0625},
- facingMode: [],
- focusDistance: {max: 1024, min: 0, step: 10},
- focusMode: ["continuous", "manual"],
- frameRate: {max: 30, min: 0},
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: {max: 720, min: 1},
- resizeMode: ["none", "crop-and-scale"],
- saturation: {max: 100, min: 0, step: 1},
- sharpness: {max: 7, min: 1, step: 1},
- whiteBalanceMode: ["continuous", "manual"],
- width: {max: 1280, min: 1},
- zoom: {max: 800, min: 100, step: 100},
-}
-*/
-```
-
-**See also**
-
-* [MediaTrackCapabilities](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities)
-
-## getCameraSettings
-
-Returns the current values for each constrainable property of the current camera.
-
-Right now, this method only works in Chrome and should be called when the scanner is open.
-
-```typescript
-getCameraSettings(): any
-```
-
-**Return value**
-
-The current values for each constrainable property of the current camera in the form of a [MediaTrackSettings](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings) object.
-
-**Code Snippet**
-
-```js
-scanner.getCameraSettings();
-/* Result sample
-{
- aspectRatio: 1.3333333333333333,
- brightness: 0,
- colorTemperature: 4600,
- contrast: 0,
- deviceId: "3a505c29a3312600ea0afd79f8e2b4ba4fba3e539257801ff1de8718c27f2bed",
- exposureMode: "continuous",
- exposureTime: 156.25,
- focusDistance: 120,
- focusMode: "continuous",
- frameRate: 30,
- groupId: "35a82dcb7d5b0ef5bda550718d194f04a812c976175e926ccb81fb9d235d010f",
- height: 480,
- resizeMode: "none",
- saturation: 73,
- sharpness: 2,
- whiteBalanceMode: "continuous",
- width: 640,
- zoom: 100,
-}
-*/
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFrameRate
-
-Adjusts the frame rate.
-
-> At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFrameRate(rate: number): Promise
-```
-
-**Parameters**
-
-`rate` : specifies the new frame rate.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFrameRate(10);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFrameRate
-
-Returns the real-time frame rate.
-
-```typescript
-getFrameRate(): number;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The calculated real-time frame rate.
-
-**Code Snippet**
-
-```js
-await scanner.getFrameRate();
-```
-
-
-## enableTapToFocus
-
-Enables manual camera focus when clicking/tapping on the video.
-
-```typescript
-enableTapToFocus() : void;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```javascript
-scanner.enableTapToFocus();
-```
-
-## disableTapToFocus
-
-Disables manual camera focus when clicking/tapping on the video.
-
-```typescript
-disableTapToFocus() : void;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-None.
-
-**Code Snippet**
-
-```javascript
-scanner.disableTapToFocus();
-```
-
-## isTapToFocusEnabled
-
-Returns whether clicking/tapping on the video invokes the camera to focus.
-
-```typescript
-isTapToFocusEnabled() : boolean;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-`true` means clicking/tapping on the video will invoke the camera to focus. `false` means clicking/tapping on the video does nothing.
-
-**Code Snippet**
-
-```javascript
-if (scanner.isTapToFocusEnabled()) {
- console.log("You can tap or click on the video to focus!");
-}
-```
-
-## getColorTemperature
-
-Returns the color temperature of the selected camera.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-getColorTemperature(): number;
-```
-
-## setColorTemperature
-
-Adjusts the color temperature.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setColorTemperature(colorTemperatur: number): Promise
-```
-
-**Parameters**
-
-`colorTemperatur` : specifies the new color temperature.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setColorTemperature(5000);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-
-## getExposureCompensation
-
-Returns the exposure compensation index of the selected camera.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-getExposureCompensation(): number;
-```
-
-## setExposureCompensation
-
-Sets the exposure compensation index.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setExposureCompensation(exposureCompensation: number): Promise
-```
-
-**Parameters**
-
-`exposureCompensation` : specifies the new exposure compensation index.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setExposureCompensation(-0.7);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocusSettings
-
-Returns the focus settings.
-
-```typescript
-type FocusArea = {
- centerPoint: { x: string, y: string };
- width: string;
- height: string;
-};
-type FocusSettings = {
- mode: string;
- distance: number;
- area: FocusArea;
-};
-getFocusSettings(): FocusSettings;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-The current focus settings.
-
-**Code Snippet**
-
-```javascript
-scanner.getFocusSettings();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## setFocus
-
-Sets the focus mode and focus distance of the camera.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setFocus(mode: string, distance?: number): Promise;
-```
-
-**Parameters**
-
-`mode` : specifies the focus mode, the available values include `continuous` and `manual` .
-`distance` : specifies the focus distance, only required when the `mode` is set to `manual` . Use [getCapabilities](#getcapabilities) to get the allowed value range.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setFocus("manual", 400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getFocus
-
-Gets the focus mode and the focus distance.
-
-```typescript
-getFocus(): {mode: string, distance?: number};
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An object describing the current camera's focus properties "mode" and "distance". If `mode` is `continuous`, `distance` has no meaning and is omitted from the object.
-
-**Code Snippet**
-
-```js
-await scanner.getFocus();
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## getZoomSettings
-
-Returns the zoom settings.
-
-```typescript
-getZoomSettings(): { factor: number };;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-An object that describes the zoom settings. As of version 3.2, it contains only the zoom factor.
-
-**Code Snippet**
-
-```javascript
-console.log(scanner.getZoomSettings().factor);
-```
-
-## setZoom
-
-Sets current zoom value.
-
-> At present, this method only works in Edge, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open.
-
-```typescript
-setZoom(zoomValue: number): Promise
-```
-
-**Parameters**
-
-`zoomValue` : specifies the new zoom value.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```js
-await scanner.setZoom(400);
-```
-
-**See also**
-
-* [getCapabilities](#getcapabilities)
-
-## resetZoom
-
-Resets the zoom level of the video.
-
-```typescript
-resetZoom(): Promise;
-```
-
-**Parameters**
-
-None.
-
-**Return value**
-
-A promise that resolves when the operation succeeds.
-
-**Code Snippet**
-
-```javascript
-await scanner.resetZoom();
-```
-
-## turnOnTorch
-
-Turns on the torch/flashlight if the current camera supports it.
-
-> This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported.
-
-```typescript
-turnOnTorch(): Promise