element-ps 1.0.11 → 1.0.15

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 (146) hide show
  1. package/dist/index.full.js +165 -146
  2. package/dist/index.full.min.js +4 -4
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +4 -4
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +164 -147
  7. package/es/components/descriptions/index.d.ts +14 -2
  8. package/es/components/descriptions/src/description-item.d.ts +7 -1
  9. package/es/components/descriptions/src/descriptions.type.d.ts +1 -0
  10. package/es/components/input-number/index.d.ts +2 -0
  11. package/es/components/input-number/src/input-number.vue.d.ts +2 -0
  12. package/es/components/rate/index.d.ts +75 -246
  13. package/es/components/rate/src/rate.d.ts +26 -0
  14. package/es/components/rate/src/rate.vue.d.ts +108 -0
  15. package/es/index.mjs +6 -5
  16. package/es/index.mjs.map +1 -1
  17. package/es/packages/components/affix/index.mjs +2 -2
  18. package/es/packages/components/affix/src/affix.mjs +22 -5
  19. package/es/packages/components/affix/src/affix.mjs.map +1 -1
  20. package/es/packages/components/affix/src/affix.vue_vue&type=script&lang.mjs +1 -1
  21. package/es/packages/components/affix/src/affix2.mjs +5 -22
  22. package/es/packages/components/affix/src/affix2.mjs.map +1 -1
  23. package/es/packages/components/backtop/index.mjs +2 -2
  24. package/es/packages/components/backtop/src/backtop.mjs +5 -19
  25. package/es/packages/components/backtop/src/backtop.mjs.map +1 -1
  26. package/es/packages/components/backtop/src/backtop.vue_vue&type=script&lang.mjs +1 -1
  27. package/es/packages/components/backtop/src/backtop2.mjs +19 -5
  28. package/es/packages/components/backtop/src/backtop2.mjs.map +1 -1
  29. package/es/packages/components/cascader/src/index.vue_vue&type=script&lang.mjs.map +1 -1
  30. package/es/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.mjs +8 -6
  31. package/es/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.mjs.map +1 -1
  32. package/es/packages/components/descriptions/src/description-item.mjs +3 -0
  33. package/es/packages/components/descriptions/src/description-item.mjs.map +1 -1
  34. package/es/packages/components/descriptions/src/descriptions-cell.mjs +2 -1
  35. package/es/packages/components/descriptions/src/descriptions-cell.mjs.map +1 -1
  36. package/es/packages/components/empty/index.mjs +2 -2
  37. package/es/packages/components/empty/src/empty.mjs +12 -5
  38. package/es/packages/components/empty/src/empty.mjs.map +1 -1
  39. package/es/packages/components/empty/src/empty.vue_vue&type=script&lang.mjs +1 -1
  40. package/es/packages/components/empty/src/empty2.mjs +5 -12
  41. package/es/packages/components/empty/src/empty2.mjs.map +1 -1
  42. package/es/packages/components/form/src/form-item.vue_vue&type=script&lang.mjs.map +1 -1
  43. package/es/packages/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.mjs +10 -8
  44. package/es/packages/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.mjs.map +1 -1
  45. package/es/packages/components/image-viewer/index.mjs +2 -2
  46. package/es/packages/components/image-viewer/src/image-viewer.mjs +5 -25
  47. package/es/packages/components/image-viewer/src/image-viewer.mjs.map +1 -1
  48. package/es/packages/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.mjs +1 -1
  49. package/es/packages/components/image-viewer/src/image-viewer2.mjs +25 -5
  50. package/es/packages/components/image-viewer/src/image-viewer2.mjs.map +1 -1
  51. package/es/packages/components/index.mjs +6 -5
  52. package/es/packages/components/index.mjs.map +1 -1
  53. package/es/packages/components/input-number/index.mjs +2 -2
  54. package/es/packages/components/input-number/src/input-number.mjs +49 -5
  55. package/es/packages/components/input-number/src/input-number.mjs.map +1 -1
  56. package/es/packages/components/input-number/src/input-number.vue_vue&type=script&lang.mjs +5 -3
  57. package/es/packages/components/input-number/src/input-number.vue_vue&type=script&lang.mjs.map +1 -1
  58. package/es/packages/components/input-number/src/input-number.vue_vue&type=template&id=dec60af6&lang.mjs.map +1 -1
  59. package/es/packages/components/input-number/src/input-number2.mjs +5 -49
  60. package/es/packages/components/input-number/src/input-number2.mjs.map +1 -1
  61. package/es/packages/components/rate/index.mjs +6 -8
  62. package/es/packages/components/rate/index.mjs.map +1 -1
  63. package/es/packages/components/rate/src/rate.mjs +87 -0
  64. package/es/packages/components/rate/src/rate.mjs.map +1 -0
  65. package/es/packages/components/rate/src/{index.vue_vue&type=script&lang.mjs → rate.vue_vue&type=script&lang.mjs} +19 -88
  66. package/es/packages/components/rate/src/rate.vue_vue&type=script&lang.mjs.map +1 -0
  67. package/es/packages/components/rate/src/{index.vue_vue&type=template&id=55b4fa7d&lang.mjs → rate.vue_vue&type=template&id=38c42df6&lang.mjs} +1 -1
  68. package/es/packages/components/rate/src/rate.vue_vue&type=template&id=38c42df6&lang.mjs.map +1 -0
  69. package/es/packages/components/rate/src/rate2.mjs +7 -0
  70. package/es/packages/components/rate/src/rate2.mjs.map +1 -0
  71. package/lib/components/descriptions/index.d.ts +14 -2
  72. package/lib/components/descriptions/src/description-item.d.ts +7 -1
  73. package/lib/components/descriptions/src/descriptions.type.d.ts +1 -0
  74. package/lib/components/input-number/index.d.ts +2 -0
  75. package/lib/components/input-number/src/input-number.vue.d.ts +2 -0
  76. package/lib/components/rate/index.d.ts +75 -246
  77. package/lib/components/rate/src/rate.d.ts +26 -0
  78. package/lib/components/rate/src/rate.vue.d.ts +108 -0
  79. package/lib/index.js +8 -5
  80. package/lib/index.js.map +1 -1
  81. package/lib/packages/components/affix/index.js +2 -2
  82. package/lib/packages/components/affix/src/affix.js +21 -5
  83. package/lib/packages/components/affix/src/affix.js.map +1 -1
  84. package/lib/packages/components/affix/src/affix.vue_vue&type=script&lang.js +1 -1
  85. package/lib/packages/components/affix/src/affix2.js +5 -21
  86. package/lib/packages/components/affix/src/affix2.js.map +1 -1
  87. package/lib/packages/components/backtop/index.js +2 -2
  88. package/lib/packages/components/backtop/src/backtop.js +6 -19
  89. package/lib/packages/components/backtop/src/backtop.js.map +1 -1
  90. package/lib/packages/components/backtop/src/backtop.vue_vue&type=script&lang.js +1 -1
  91. package/lib/packages/components/backtop/src/backtop2.js +19 -6
  92. package/lib/packages/components/backtop/src/backtop2.js.map +1 -1
  93. package/lib/packages/components/cascader/src/index.vue_vue&type=script&lang.js.map +1 -1
  94. package/lib/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.js +8 -6
  95. package/lib/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.js.map +1 -1
  96. package/lib/packages/components/descriptions/src/description-item.js +3 -0
  97. package/lib/packages/components/descriptions/src/description-item.js.map +1 -1
  98. package/lib/packages/components/descriptions/src/descriptions-cell.js +2 -1
  99. package/lib/packages/components/descriptions/src/descriptions-cell.js.map +1 -1
  100. package/lib/packages/components/empty/index.js +2 -2
  101. package/lib/packages/components/empty/src/empty.js +12 -6
  102. package/lib/packages/components/empty/src/empty.js.map +1 -1
  103. package/lib/packages/components/empty/src/empty.vue_vue&type=script&lang.js +1 -1
  104. package/lib/packages/components/empty/src/empty2.js +6 -12
  105. package/lib/packages/components/empty/src/empty2.js.map +1 -1
  106. package/lib/packages/components/form/src/form-item.vue_vue&type=script&lang.js.map +1 -1
  107. package/lib/packages/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.js +10 -8
  108. package/lib/packages/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.js.map +1 -1
  109. package/lib/packages/components/image-viewer/index.js +2 -2
  110. package/lib/packages/components/image-viewer/src/image-viewer.js +5 -24
  111. package/lib/packages/components/image-viewer/src/image-viewer.js.map +1 -1
  112. package/lib/packages/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.js +1 -1
  113. package/lib/packages/components/image-viewer/src/image-viewer2.js +24 -5
  114. package/lib/packages/components/image-viewer/src/image-viewer2.js.map +1 -1
  115. package/lib/packages/components/index.js +8 -5
  116. package/lib/packages/components/index.js.map +1 -1
  117. package/lib/packages/components/input-number/index.js +2 -2
  118. package/lib/packages/components/input-number/src/input-number.js +48 -5
  119. package/lib/packages/components/input-number/src/input-number.js.map +1 -1
  120. package/lib/packages/components/input-number/src/input-number.vue_vue&type=script&lang.js +5 -3
  121. package/lib/packages/components/input-number/src/input-number.vue_vue&type=script&lang.js.map +1 -1
  122. package/lib/packages/components/input-number/src/input-number.vue_vue&type=template&id=dec60af6&lang.js.map +1 -1
  123. package/lib/packages/components/input-number/src/input-number2.js +5 -48
  124. package/lib/packages/components/input-number/src/input-number2.js.map +1 -1
  125. package/lib/packages/components/rate/index.js +8 -8
  126. package/lib/packages/components/rate/index.js.map +1 -1
  127. package/lib/packages/components/rate/src/rate.js +92 -0
  128. package/lib/packages/components/rate/src/rate.js.map +1 -0
  129. package/lib/packages/components/rate/src/{index.vue_vue&type=script&lang.js → rate.vue_vue&type=script&lang.js} +19 -88
  130. package/lib/packages/components/rate/src/rate.vue_vue&type=script&lang.js.map +1 -0
  131. package/lib/packages/components/rate/src/{index.vue_vue&type=template&id=55b4fa7d&lang.js → rate.vue_vue&type=template&id=38c42df6&lang.js} +1 -1
  132. package/lib/packages/components/rate/src/rate.vue_vue&type=template&id=38c42df6&lang.js.map +1 -0
  133. package/lib/packages/components/rate/src/rate2.js +12 -0
  134. package/lib/packages/components/rate/src/rate2.js.map +1 -0
  135. package/package.json +1 -1
  136. package/web-types.json +1 -1
  137. package/es/components/rate/src/index.vue.d.ts +0 -141
  138. package/es/packages/components/rate/src/index.mjs +0 -7
  139. package/es/packages/components/rate/src/index.mjs.map +0 -1
  140. package/es/packages/components/rate/src/index.vue_vue&type=script&lang.mjs.map +0 -1
  141. package/es/packages/components/rate/src/index.vue_vue&type=template&id=55b4fa7d&lang.mjs.map +0 -1
  142. package/lib/components/rate/src/index.vue.d.ts +0 -141
  143. package/lib/packages/components/rate/src/index.js +0 -12
  144. package/lib/packages/components/rate/src/index.js.map +0 -1
  145. package/lib/packages/components/rate/src/index.vue_vue&type=script&lang.js.map +0 -1
  146. package/lib/packages/components/rate/src/index.vue_vue&type=template&id=55b4fa7d&lang.js.map +0 -1
@@ -7,90 +7,32 @@ var shared = require('@vue/shared');
7
7
  require('../../../tokens/index.js');
8
8
  var index = require('../../icon/index.js');
9
9
  var icons = require('@element-plus/icons');
10
+ var rate = require('./rate.js');
10
11
  var form = require('../../../tokens/form.js');
11
12
 
13
+ function getValueFromMap(value, map) {
14
+ const isExcludedObject = (val) => shared.isObject(val);
15
+ const matchedKeys = Object.keys(map).map((key) => +key).filter((key) => {
16
+ const val = map[key];
17
+ const excluded = isExcludedObject(val) ? val.excluded : false;
18
+ return excluded ? value < key : value <= key;
19
+ }).sort((a, b) => a - b);
20
+ const matchedValue = map[matchedKeys[0]];
21
+ return isExcludedObject(matchedValue) && matchedValue.value || matchedValue;
22
+ }
12
23
  var script = vue.defineComponent({
13
24
  name: "PsRate",
14
- components: { PsIcon: index.PsIcon, StarFilled: icons.StarFilled, Star: icons.Star },
15
- props: {
16
- modelValue: {
17
- type: Number,
18
- default: 0
19
- },
20
- lowThreshold: {
21
- type: Number,
22
- default: 2
23
- },
24
- highThreshold: {
25
- type: Number,
26
- default: 4
27
- },
28
- max: {
29
- type: Number,
30
- default: 5
31
- },
32
- colors: {
33
- type: [Array, Object],
34
- default: () => ["#F7BA2A", "#F7BA2A", "#F7BA2A"]
35
- },
36
- voidColor: {
37
- type: String,
38
- default: "#C6D1DE"
39
- },
40
- disabledVoidColor: {
41
- type: String,
42
- default: "#EFF2F7"
43
- },
44
- icons: {
45
- type: [Array, Object],
46
- default: () => [icons.StarFilled, icons.StarFilled, icons.StarFilled]
47
- },
48
- voidIcon: {
49
- type: [String, Object],
50
- default: icons.Star
51
- },
52
- disabledvoidIcon: {
53
- type: [String, Object],
54
- default: icons.StarFilled
55
- },
56
- disabled: {
57
- type: Boolean,
58
- default: false
59
- },
60
- allowHalf: {
61
- type: Boolean,
62
- default: false
63
- },
64
- showText: {
65
- type: Boolean,
66
- default: false
67
- },
68
- showScore: {
69
- type: Boolean,
70
- default: false
71
- },
72
- textColor: {
73
- type: String,
74
- default: "#1f2d3d"
75
- },
76
- texts: {
77
- type: Array,
78
- default: () => [
79
- "Extremely bad",
80
- "Disappointed",
81
- "Fair",
82
- "Satisfied",
83
- "Surprise"
84
- ]
85
- },
86
- scoreTemplate: {
87
- type: String,
88
- default: "{value}"
89
- }
25
+ components: {
26
+ PsIcon: index.PsIcon,
27
+ StarFilled: icons.StarFilled,
28
+ Star: icons.Star
90
29
  },
30
+ props: rate.rateProps,
91
31
  setup(props) {
92
32
  const elForm = vue.inject(form.elFormKey, {});
93
33
  const currentValue = vue.ref(props.modelValue);
34
+ const hoverIndex = vue.ref(-1);
35
+ const pointerAtLeftHalf = vue.ref(true);
94
36
  const rateDisabled = vue.computed(() => props.disabled || elForm.disabled);
95
37
  const text = vue.computed(() => {
96
38
  let result = "";
@@ -101,15 +43,6 @@ var script = vue.defineComponent({
101
43
  }
102
44
  return result;
103
45
  });
104
- function getValueFromMap(value, map) {
105
- const matchedKeys = Object.keys(map).filter((key) => {
106
- const val = map[key];
107
- const excluded = shared.isObject(val) ? val.excluded : false;
108
- return excluded ? value < key : value <= key;
109
- }).sort((a, b) => a - b);
110
- const matchedValue = map[matchedKeys[0]];
111
- return shared.isObject(matchedValue) ? matchedValue.value || matchedValue : matchedValue || "";
112
- }
113
46
  const valueDecimal = vue.computed(() => props.modelValue * 100 - Math.floor(props.modelValue) * 100);
114
47
  const colorMap = vue.computed(() => shared.isArray(props.colors) ? {
115
48
  [props.lowThreshold]: props.colors[0],
@@ -147,7 +80,6 @@ var script = vue.defineComponent({
147
80
  result.fill(voidComponent.value, threshold, props.max);
148
81
  return result;
149
82
  });
150
- const pointerAtLeftHalf = vue.ref(true);
151
83
  function showDecimalIcon(item) {
152
84
  const showWhenDisabled = rateDisabled.value && valueDecimal.value > 0 && item - 1 < props.modelValue && item > props.modelValue;
153
85
  const showWhenAllowHalf = props.allowHalf && pointerAtLeftHalf.value && item - 0.5 <= currentValue.value && item > currentValue.value;
@@ -159,7 +91,6 @@ var script = vue.defineComponent({
159
91
  color: item <= currentValue.value ? activeColor.value : voidColor
160
92
  };
161
93
  }
162
- const hoverIndex = vue.ref(-1);
163
94
  return {
164
95
  hoverIndex,
165
96
  currentValue,
@@ -175,4 +106,4 @@ var script = vue.defineComponent({
175
106
  });
176
107
 
177
108
  exports["default"] = script;
178
- //# sourceMappingURL=index.vue_vue&type=script&lang.js.map
109
+ //# sourceMappingURL=rate.vue_vue&type=script&lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate.vue_vue&type=script&lang.js","sources":["../../../../../../../packages/components/rate/src/rate.vue"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >\n {{ text }}\n </span>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref, watch } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\nimport { rateProps, rateEmits } from './rate'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nfunction getValueFromMap<T>(\n value: number,\n map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n const isExcludedObject = (\n val: unknown\n ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n const matchedKeys = Object.keys(map)\n .map((key) => +key)\n .filter((key) => {\n const val = map[key]\n const excluded = isExcludedObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a, b) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\nexport default defineComponent({\n name: 'PsRate',\n components: {\n PsIcon,\n StarFilled,\n Star,\n },\n props: rateProps,\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n const hoverIndex = ref(-1)\n const pointerAtLeftHalf = ref(true)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n return {\n hoverIndex,\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["isObject","defineComponent","PsIcon","StarFilled","Star","rateProps","inject","elFormKey","ref","computed","isArray"],"mappings":"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"}
@@ -52,4 +52,4 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
52
52
  }
53
53
 
54
54
  exports.render = render;
55
- //# sourceMappingURL=index.vue_vue&type=template&id=55b4fa7d&lang.js.map
55
+ //# sourceMappingURL=rate.vue_vue&type=template&id=38c42df6&lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate.vue_vue&type=template&id=38c42df6&lang.js","sources":["../../../../../../../packages/components/rate/src/rate.vue?vue&type=template&id=38c42df6&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >\n {{ text }}\n </span>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref, watch } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\nimport { rateProps, rateEmits } from './rate'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nfunction getValueFromMap<T>(\n value: number,\n map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n const isExcludedObject = (\n val: unknown\n ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n const matchedKeys = Object.keys(map)\n .map((key) => +key)\n .filter((key) => {\n const val = map[key]\n const excluded = isExcludedObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a, b) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\nexport default defineComponent({\n name: 'PsRate',\n components: {\n PsIcon,\n StarFilled,\n Star,\n },\n props: rateProps,\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n const hoverIndex = ref(-1)\n const pointerAtLeftHalf = ref(true)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n return {\n hoverIndex,\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createVNode","_createBlock"],"mappings":";;;;;;;;;0BACEA;IACE,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,iBAAe;IACf,kBAAgB;IACjB,iBAAc;AAAA,IACb,iBAAe;IAChB,UAAS;AAAA;0BAETA,0DACwB,WAAd,MAAM;8BADhBA;QAEG;AAAA,QACD,OAAM;AAAA,QACL,oCAAiB;;QAElBC;UACG,qCAAiB,oBAAe,SAC3B;AAAA,UACL,0BAAO,kBAAa;AAAA;+BAErB;8BAAAC,4CAAgB,oBAAe;YAEvB,qBAAgB,0BADxBA;;cAEG,0BAAO;cACR,OAAM;AAAA;mCAEN;kCAAAA,4CAAgB;;;;;;;;;IAKd,iBAAY,mCADpBF;;MAEE,OAAM;AAAA,MACL,mCAAgB;2BAEd;;;;;;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var rate_vue_vue_type_script_lang = require('./rate.vue_vue&type=script&lang.js');
6
+ var rate_vue_vue_type_template_id_38c42df6_lang = require('./rate.vue_vue&type=template&id=38c42df6&lang.js');
7
+
8
+ rate_vue_vue_type_script_lang["default"].render = rate_vue_vue_type_template_id_38c42df6_lang.render;
9
+ rate_vue_vue_type_script_lang["default"].__file = "packages/components/rate/src/rate.vue";
10
+
11
+ exports["default"] = rate_vue_vue_type_script_lang["default"];
12
+ //# sourceMappingURL=rate2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "element-ps",
3
- "version": "1.0.11",
3
+ "version": "1.0.15",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "homepage": "https://element-plus.org/",
6
6
  "keywords": [
package/web-types.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.11","contributions":{"html":{"types-syntax":"typescript","description-markup":"markdown"}}}
1
+ {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.15","contributions":{"html":{"types-syntax":"typescript","description-markup":"markdown"}}}
@@ -1,141 +0,0 @@
1
- import type { PropType, Component } from 'vue';
2
- declare const _default: import("vue").DefineComponent<{
3
- modelValue: {
4
- type: NumberConstructor;
5
- default: number;
6
- };
7
- lowThreshold: {
8
- type: NumberConstructor;
9
- default: number;
10
- };
11
- highThreshold: {
12
- type: NumberConstructor;
13
- default: number;
14
- };
15
- max: {
16
- type: NumberConstructor;
17
- default: number;
18
- };
19
- colors: {
20
- type: (ObjectConstructor | ArrayConstructor)[];
21
- default: () => string[];
22
- };
23
- voidColor: {
24
- type: StringConstructor;
25
- default: string;
26
- };
27
- disabledVoidColor: {
28
- type: StringConstructor;
29
- default: string;
30
- };
31
- icons: {
32
- type: PropType<string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
33
- default: () => import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>[];
34
- };
35
- voidIcon: {
36
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
37
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
38
- };
39
- disabledvoidIcon: {
40
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
41
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
42
- };
43
- disabled: {
44
- type: BooleanConstructor;
45
- default: boolean;
46
- };
47
- allowHalf: {
48
- type: BooleanConstructor;
49
- default: boolean;
50
- };
51
- showText: {
52
- type: BooleanConstructor;
53
- default: boolean;
54
- };
55
- showScore: {
56
- type: BooleanConstructor;
57
- default: boolean;
58
- };
59
- textColor: {
60
- type: StringConstructor;
61
- default: string;
62
- };
63
- texts: {
64
- type: PropType<string[]>;
65
- default: () => string[];
66
- };
67
- scoreTemplate: {
68
- type: StringConstructor;
69
- default: string;
70
- };
71
- }, {
72
- hoverIndex: import("vue").Ref<number>;
73
- currentValue: import("vue").Ref<number>;
74
- rateDisabled: import("vue").ComputedRef<boolean | undefined>;
75
- text: import("vue").ComputedRef<string>;
76
- decimalStyle: import("vue").ComputedRef<{
77
- color: any;
78
- width: string;
79
- }>;
80
- decimalIconComponent: import("vue").ComputedRef<any>;
81
- iconComponents: import("vue").ComputedRef<any[]>;
82
- showDecimalIcon: (item: number) => boolean;
83
- getIconStyle: (item: number) => {
84
- color: any;
85
- };
86
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
87
- modelValue?: unknown;
88
- lowThreshold?: unknown;
89
- highThreshold?: unknown;
90
- max?: unknown;
91
- colors?: unknown;
92
- voidColor?: unknown;
93
- disabledVoidColor?: unknown;
94
- icons?: unknown;
95
- voidIcon?: unknown;
96
- disabledvoidIcon?: unknown;
97
- disabled?: unknown;
98
- allowHalf?: unknown;
99
- showText?: unknown;
100
- showScore?: unknown;
101
- textColor?: unknown;
102
- texts?: unknown;
103
- scoreTemplate?: unknown;
104
- } & {
105
- disabled: boolean;
106
- modelValue: number;
107
- max: number;
108
- textColor: string;
109
- showText: boolean;
110
- lowThreshold: number;
111
- highThreshold: number;
112
- colors: Record<string, any> | unknown[];
113
- voidColor: string;
114
- disabledVoidColor: string;
115
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
116
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
117
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
118
- allowHalf: boolean;
119
- showScore: boolean;
120
- texts: string[];
121
- scoreTemplate: string;
122
- } & {}>, {
123
- disabled: boolean;
124
- modelValue: number;
125
- max: number;
126
- textColor: string;
127
- showText: boolean;
128
- lowThreshold: number;
129
- highThreshold: number;
130
- colors: Record<string, any> | unknown[];
131
- voidColor: string;
132
- disabledVoidColor: string;
133
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
134
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
135
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
136
- allowHalf: boolean;
137
- showScore: boolean;
138
- texts: string[];
139
- scoreTemplate: string;
140
- }>;
141
- export default _default;
@@ -1,7 +0,0 @@
1
- import script from './index.vue_vue&type=script&lang.mjs';
2
- export { default } from './index.vue_vue&type=script&lang.mjs';
3
- import { render } from './index.vue_vue&type=template&id=55b4fa7d&lang.mjs';
4
-
5
- script.render = render;
6
- script.__file = "packages/components/rate/src/index.vue";
7
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=script&lang.mjs","sources":["../../../../../../../packages/components/rate/src/index.vue"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=template&id=55b4fa7d&lang.mjs","sources":["../../../../../../../packages/components/rate/src/index.vue?vue&type=template&id=55b4fa7d&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createVNode","_createBlock"],"mappings":";;;;;sBACEA;IACE,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,iBAAe;IACf,kBAAgB;IACjB,iBAAc;AAAA,IACb,iBAAe;IAChB,UAAS;AAAA;sBAETA,8CACwB,WAAd,MAAM;0BADhBA;QAEG;AAAA,QACD,OAAM;AAAA,QACL,gCAAiB;;QAElBC;UACG,iCAAiB,oBAAe,SAC3B;AAAA,UACL,sBAAO,kBAAa;AAAA;2BAErB;0BAAAC,oCAAgB,oBAAe;YAEvB,qBAAgB,sBADxBA;;cAEG,sBAAO;cACR,OAAM;AAAA;+BAEN;8BAAAA,oCAAgB;;;;;;;;;IAKd,iBAAY,+BADpBF;;MAEE,OAAM;AAAA,MACL,+BAAgB;uBACb;;;;;;"}
@@ -1,141 +0,0 @@
1
- import type { PropType, Component } from 'vue';
2
- declare const _default: import("vue").DefineComponent<{
3
- modelValue: {
4
- type: NumberConstructor;
5
- default: number;
6
- };
7
- lowThreshold: {
8
- type: NumberConstructor;
9
- default: number;
10
- };
11
- highThreshold: {
12
- type: NumberConstructor;
13
- default: number;
14
- };
15
- max: {
16
- type: NumberConstructor;
17
- default: number;
18
- };
19
- colors: {
20
- type: (ObjectConstructor | ArrayConstructor)[];
21
- default: () => string[];
22
- };
23
- voidColor: {
24
- type: StringConstructor;
25
- default: string;
26
- };
27
- disabledVoidColor: {
28
- type: StringConstructor;
29
- default: string;
30
- };
31
- icons: {
32
- type: PropType<string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
33
- default: () => import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>[];
34
- };
35
- voidIcon: {
36
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
37
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
38
- };
39
- disabledvoidIcon: {
40
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
41
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
42
- };
43
- disabled: {
44
- type: BooleanConstructor;
45
- default: boolean;
46
- };
47
- allowHalf: {
48
- type: BooleanConstructor;
49
- default: boolean;
50
- };
51
- showText: {
52
- type: BooleanConstructor;
53
- default: boolean;
54
- };
55
- showScore: {
56
- type: BooleanConstructor;
57
- default: boolean;
58
- };
59
- textColor: {
60
- type: StringConstructor;
61
- default: string;
62
- };
63
- texts: {
64
- type: PropType<string[]>;
65
- default: () => string[];
66
- };
67
- scoreTemplate: {
68
- type: StringConstructor;
69
- default: string;
70
- };
71
- }, {
72
- hoverIndex: import("vue").Ref<number>;
73
- currentValue: import("vue").Ref<number>;
74
- rateDisabled: import("vue").ComputedRef<boolean | undefined>;
75
- text: import("vue").ComputedRef<string>;
76
- decimalStyle: import("vue").ComputedRef<{
77
- color: any;
78
- width: string;
79
- }>;
80
- decimalIconComponent: import("vue").ComputedRef<any>;
81
- iconComponents: import("vue").ComputedRef<any[]>;
82
- showDecimalIcon: (item: number) => boolean;
83
- getIconStyle: (item: number) => {
84
- color: any;
85
- };
86
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
87
- modelValue?: unknown;
88
- lowThreshold?: unknown;
89
- highThreshold?: unknown;
90
- max?: unknown;
91
- colors?: unknown;
92
- voidColor?: unknown;
93
- disabledVoidColor?: unknown;
94
- icons?: unknown;
95
- voidIcon?: unknown;
96
- disabledvoidIcon?: unknown;
97
- disabled?: unknown;
98
- allowHalf?: unknown;
99
- showText?: unknown;
100
- showScore?: unknown;
101
- textColor?: unknown;
102
- texts?: unknown;
103
- scoreTemplate?: unknown;
104
- } & {
105
- disabled: boolean;
106
- modelValue: number;
107
- max: number;
108
- textColor: string;
109
- showText: boolean;
110
- lowThreshold: number;
111
- highThreshold: number;
112
- colors: Record<string, any> | unknown[];
113
- voidColor: string;
114
- disabledVoidColor: string;
115
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
116
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
117
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
118
- allowHalf: boolean;
119
- showScore: boolean;
120
- texts: string[];
121
- scoreTemplate: string;
122
- } & {}>, {
123
- disabled: boolean;
124
- modelValue: number;
125
- max: number;
126
- textColor: string;
127
- showText: boolean;
128
- lowThreshold: number;
129
- highThreshold: number;
130
- colors: Record<string, any> | unknown[];
131
- voidColor: string;
132
- disabledVoidColor: string;
133
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
134
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
135
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
136
- allowHalf: boolean;
137
- showScore: boolean;
138
- texts: string[];
139
- scoreTemplate: string;
140
- }>;
141
- export default _default;
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var index_vue_vue_type_script_lang = require('./index.vue_vue&type=script&lang.js');
6
- var index_vue_vue_type_template_id_55b4fa7d_lang = require('./index.vue_vue&type=template&id=55b4fa7d&lang.js');
7
-
8
- index_vue_vue_type_script_lang["default"].render = index_vue_vue_type_template_id_55b4fa7d_lang.render;
9
- index_vue_vue_type_script_lang["default"].__file = "packages/components/rate/src/index.vue";
10
-
11
- exports["default"] = index_vue_vue_type_script_lang["default"];
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=script&lang.js","sources":["../../../../../../../packages/components/rate/src/index.vue"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["defineComponent","PsIcon","StarFilled","Star","inject","elFormKey","ref","computed","isObject","isArray"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=template&id=55b4fa7d&lang.js","sources":["../../../../../../../packages/components/rate/src/index.vue?vue&type=template&id=55b4fa7d&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createVNode","_createBlock"],"mappings":";;;;;;;;;0BACEA;IACE,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,iBAAe;IACf,kBAAgB;IACjB,iBAAc;AAAA,IACb,iBAAe;IAChB,UAAS;AAAA;0BAETA,0DACwB,WAAd,MAAM;8BADhBA;QAEG;AAAA,QACD,OAAM;AAAA,QACL,oCAAiB;;QAElBC;UACG,qCAAiB,oBAAe,SAC3B;AAAA,UACL,0BAAO,kBAAa;AAAA;+BAErB;8BAAAC,4CAAgB,oBAAe;YAEvB,qBAAgB,0BADxBA;;cAEG,0BAAO;cACR,OAAM;AAAA;mCAEN;kCAAAA,4CAAgB;;;;;;;;;IAKd,iBAAY,mCADpBF;;MAEE,OAAM;AAAA,MACL,mCAAgB;2BACb;;;;;;"}