@knowark/componarkjs 1.13.4 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +57 -45
  2. package/lib/base/component/component.js +142 -20
  3. package/lib/base/component/component.test.js +753 -374
  4. package/lib/base/component/index.js +3 -0
  5. package/lib/base/styles/index.js +4 -1
  6. package/lib/base/utils/define.js +30 -7
  7. package/lib/base/utils/define.test.js +129 -42
  8. package/lib/base/utils/format.js +12 -6
  9. package/lib/base/utils/format.test.js +16 -16
  10. package/lib/base/utils/helpers.js +42 -9
  11. package/lib/base/utils/helpers.test.js +134 -115
  12. package/lib/base/utils/index.js +1 -0
  13. package/lib/base/utils/slots.js +3 -2
  14. package/lib/base/utils/slots.test.js +38 -38
  15. package/lib/base/utils/uuid.js +1 -1
  16. package/lib/base/utils/uuid.test.js +13 -13
  17. package/lib/components/audio/components/audio.js +36 -3
  18. package/lib/components/audio/components/audio.test.js +120 -90
  19. package/lib/components/audio/index.js +1 -0
  20. package/lib/components/audio/styles/index.js +5 -1
  21. package/lib/components/camera/components/camera.js +15 -0
  22. package/lib/components/camera/components/camera.test.js +96 -91
  23. package/lib/components/camera/index.js +1 -0
  24. package/lib/components/camera/styles/index.js +5 -1
  25. package/lib/components/capture/components/capture.js +48 -4
  26. package/lib/components/capture/components/capture.test.js +165 -97
  27. package/lib/components/capture/index.js +1 -0
  28. package/lib/components/droparea/components/droparea-preview.js +114 -19
  29. package/lib/components/droparea/components/droparea-preview.test.js +344 -80
  30. package/lib/components/droparea/components/droparea.js +82 -6
  31. package/lib/components/droparea/components/droparea.test.js +309 -299
  32. package/lib/components/droparea/index.js +1 -0
  33. package/lib/components/droparea/styles/index.js +5 -1
  34. package/lib/components/emit/components/emit.js +34 -4
  35. package/lib/components/emit/components/emit.test.js +192 -134
  36. package/lib/components/emit/index.js +1 -0
  37. package/lib/components/index.js +2 -1
  38. package/lib/components/list/components/item.js +6 -0
  39. package/lib/components/list/components/item.test.js +69 -68
  40. package/lib/components/list/components/list.js +51 -7
  41. package/lib/components/list/components/list.test.js +358 -227
  42. package/lib/components/list/index.js +1 -0
  43. package/lib/components/paginator/components/paginator.js +34 -8
  44. package/lib/components/paginator/components/paginator.test.js +146 -143
  45. package/lib/components/paginator/index.js +1 -0
  46. package/lib/components/paginator/styles/index.js +5 -1
  47. package/lib/components/spinner/components/spinner.js +10 -0
  48. package/lib/components/spinner/components/spinner.test.js +36 -41
  49. package/lib/components/spinner/index.js +1 -0
  50. package/lib/components/spinner/styles/index.js +5 -1
  51. package/lib/components/splitview/components/splitview.detail.js +10 -1
  52. package/lib/components/splitview/components/splitview.detail.test.js +75 -73
  53. package/lib/components/splitview/components/splitview.js +54 -11
  54. package/lib/components/splitview/components/splitview.master.js +37 -2
  55. package/lib/components/splitview/components/splitview.master.test.js +52 -52
  56. package/lib/components/splitview/components/splitview.test.js +135 -31
  57. package/lib/components/splitview/index.js +1 -0
  58. package/lib/components/translate/components/translate.js +65 -14
  59. package/lib/components/translate/components/translate.test.js +658 -131
  60. package/lib/components/translate/index.js +1 -0
  61. package/lib/index.js +3 -0
  62. package/package.json +4 -27
  63. package/scripts/node-test-setup.js +94 -0
  64. package/tsconfig.json +1 -1
  65. package/types/base/component/component.d.ts +43 -8
  66. package/types/base/component/component.d.ts.map +1 -1
  67. package/types/base/component/index.d.ts +4 -6
  68. package/types/base/component/index.d.ts.map +1 -1
  69. package/types/base/styles/index.d.ts +3 -2
  70. package/types/base/styles/index.d.ts.map +1 -1
  71. package/types/base/utils/define.d.ts +3 -2
  72. package/types/base/utils/define.d.ts.map +1 -1
  73. package/types/base/utils/format.d.ts +12 -6
  74. package/types/base/utils/format.d.ts.map +1 -1
  75. package/types/base/utils/helpers.d.ts +27 -7
  76. package/types/base/utils/helpers.d.ts.map +1 -1
  77. package/types/base/utils/slots.d.ts +8 -10
  78. package/types/base/utils/slots.d.ts.map +1 -1
  79. package/types/base/utils/uuid.d.ts +1 -1
  80. package/types/base/utils/uuid.d.ts.map +1 -1
  81. package/types/components/audio/components/audio.d.ts +23 -9
  82. package/types/components/audio/components/audio.d.ts.map +1 -1
  83. package/types/components/audio/styles/index.d.ts +3 -2
  84. package/types/components/audio/styles/index.d.ts.map +1 -1
  85. package/types/components/camera/components/camera.d.ts +11 -3
  86. package/types/components/camera/components/camera.d.ts.map +1 -1
  87. package/types/components/camera/styles/index.d.ts +3 -2
  88. package/types/components/camera/styles/index.d.ts.map +1 -1
  89. package/types/components/capture/components/capture.d.ts +23 -3
  90. package/types/components/capture/components/capture.d.ts.map +1 -1
  91. package/types/components/droparea/components/droparea-preview.d.ts +64 -11
  92. package/types/components/droparea/components/droparea-preview.d.ts.map +1 -1
  93. package/types/components/droparea/components/droparea.d.ts +58 -13
  94. package/types/components/droparea/components/droparea.d.ts.map +1 -1
  95. package/types/components/droparea/styles/index.d.ts +3 -2
  96. package/types/components/droparea/styles/index.d.ts.map +1 -1
  97. package/types/components/emit/components/emit.d.ts +15 -3
  98. package/types/components/emit/components/emit.d.ts.map +1 -1
  99. package/types/components/list/components/item.d.ts +8 -1
  100. package/types/components/list/components/item.d.ts.map +1 -1
  101. package/types/components/list/components/list.d.ts +23 -5
  102. package/types/components/list/components/list.d.ts.map +1 -1
  103. package/types/components/paginator/components/paginator.d.ts +32 -8
  104. package/types/components/paginator/components/paginator.d.ts.map +1 -1
  105. package/types/components/paginator/styles/index.d.ts +3 -2
  106. package/types/components/paginator/styles/index.d.ts.map +1 -1
  107. package/types/components/spinner/components/spinner.d.ts +14 -3
  108. package/types/components/spinner/components/spinner.d.ts.map +1 -1
  109. package/types/components/spinner/styles/index.d.ts +3 -2
  110. package/types/components/spinner/styles/index.d.ts.map +1 -1
  111. package/types/components/splitview/components/splitview.d.ts +22 -4
  112. package/types/components/splitview/components/splitview.d.ts.map +1 -1
  113. package/types/components/splitview/components/splitview.detail.d.ts +12 -2
  114. package/types/components/splitview/components/splitview.detail.d.ts.map +1 -1
  115. package/types/components/splitview/components/splitview.master.d.ts +12 -1
  116. package/types/components/splitview/components/splitview.master.d.ts.map +1 -1
  117. package/types/components/translate/components/translate.d.ts +44 -10
  118. package/types/components/translate/components/translate.d.ts.map +1 -1
@@ -3,6 +3,9 @@ import { ListItem } from './item.js'
3
3
 
4
4
  const tag = 'ark-list'
5
5
 
6
+ /**
7
+ * List component (array-driven rendering).
8
+ */
6
9
  export class List extends Component {
7
10
  constructor () {
8
11
  super()
@@ -10,7 +13,8 @@ export class List extends Component {
10
13
  this.addEventListener('delete', this._onDeleted.bind(this))
11
14
  }
12
15
 
13
- /** @param {Object} context */
16
+ /** @param {object} context
17
+ * @returns {this} */
14
18
  init (context = {}) {
15
19
  this.source = /** @type {Array} */ (context.source) || this.source || []
16
20
  this.template = context.template || this.template || ((data) => `${data}`)
@@ -18,17 +22,19 @@ export class List extends Component {
18
22
  return super.init()
19
23
  }
20
24
 
25
+ /** @returns {this} */
21
26
  render () {
22
27
  const listData = this.select('data')
23
- const list = JSON.parse(listData?.textContent || null)
28
+ const list = this._parseJSON(listData?.textContent)
24
29
  const source = list || this.source
30
+ const sourceList = Array.isArray(source) ? source : []
25
31
 
26
32
  const itemTemplate = (this.select('template'))?.innerHTML
27
33
  this.template = itemTemplate ? this._format(itemTemplate) : this.template
28
34
 
29
35
  this.content = ''
30
36
 
31
- source.forEach((data, index) => {
37
+ sourceList.forEach((data, index) => {
32
38
  const item = new ListItem()
33
39
 
34
40
  if (this.hasAttribute('click-disabled')) {
@@ -47,7 +53,10 @@ export class List extends Component {
47
53
  return super.render()
48
54
  }
49
55
 
50
- /** @param {number} start @param {number?} deleteCount */
56
+ /** @param {number} start
57
+ * @param {number} [deleteCount=1]
58
+ * @returns {void}
59
+ */
51
60
  delete (start, deleteCount = 1) {
52
61
  this.source.splice(start, deleteCount)
53
62
  const deletions = []
@@ -58,11 +67,31 @@ export class List extends Component {
58
67
  deletions.map(item => item.remove())
59
68
  }
60
69
 
70
+ /** @param {string} template
71
+ * @returns {(data: any)=>string} */
61
72
  _format (template) {
62
- return (data) => Function(`return \`${template}\``).call(data)
73
+ let render = null
74
+
75
+ try {
76
+ render = Function(`return \`${template}\``)
77
+ } catch (error) {
78
+ this.emit('error', error)
79
+ }
80
+
81
+ return (data) => {
82
+ if (!render) return ''
83
+
84
+ try {
85
+ return render.call(data)
86
+ } catch (error) {
87
+ this.emit('error', error)
88
+ return ''
89
+ }
90
+ }
63
91
  }
64
92
 
65
- /** @param {MouseEvent} event */
93
+ /** @param {MouseEvent} event
94
+ * @returns {void} */
66
95
  _onSelected (event) {
67
96
  event.stopImmediatePropagation()
68
97
 
@@ -83,14 +112,29 @@ export class List extends Component {
83
112
  )
84
113
  }
85
114
 
86
- /** @param {MouseEvent} event */
115
+ /** @param {MouseEvent} event
116
+ * @returns {void} */
87
117
  _onDeleted (event) {
88
118
  event.stopImmediatePropagation()
89
119
 
90
120
  const target = /** @type {HTMLElement} */ (event.target)
91
121
  const item = /** @type {ListItem} */ (target.closest('ark-list-item'))
122
+ if (!item) return
92
123
 
93
124
  this.delete(Number(item.index))
94
125
  }
126
+
127
+ /** @param {string|null} source
128
+ * @returns {any[]|null} */
129
+ _parseJSON (source) {
130
+ if (!source) return null
131
+
132
+ try {
133
+ return JSON.parse(source)
134
+ } catch (error) {
135
+ this.emit('error', error)
136
+ return null
137
+ }
138
+ }
95
139
  }
96
140
  Component.define(tag, List)