-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmedium-editor-polymer.html
More file actions
executable file
·154 lines (138 loc) · 5.59 KB
/
medium-editor-polymer.html
File metadata and controls
executable file
·154 lines (138 loc) · 5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<link rel="import" href="../polymer/polymer.html">
<link rel="stylesheet" href="../medium-editor/dist/css/medium-editor.min.css">
<link rel="stylesheet" href="../medium-editor/dist/css/themes/default.min.css" id="medium-editor-theme">
<!-- Font Awesome for awesome icons. You can redefine icons used in a plugin configuration -->
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<!-- Medium Editor Insert plugin, for inserting picture and videos -->
<link rel="stylesheet" href="../medium-editor-insert-plugin/dist/css/medium-editor-insert-plugin.min.css">
<link rel="stylesheet" href="../medium-editor-insert-plugin/dist/css/medium-editor-insert-plugin-frontend.min.css">
<link rel="stylesheet" href="styles/medium-editor.css">
<script type="text/javascript" src="../medium-editor/dist/js/medium-editor.min.js"></script>
<!-- Medium Editor Insert plugin dependencies -->
<script src="../jquery/dist/jquery.min.js"></script>
<script src="../handlebars/handlebars.runtime.min.js"></script>
<script src="../jquery-sortable/source/js/jquery-sortable-min.js"></script>
<!-- Unfortunately, jQuery File Upload Plugin has a few more dependencies itself -->
<script src="../blueimp-file-upload/js/vendor/jquery.ui.widget.js"></script>
<script src="../blueimp-file-upload/js/jquery.iframe-transport.js"></script>
<script src="../blueimp-file-upload/js/jquery.fileupload.js"></script>
<!-- Medium Editor Insert plugin itself -->
<script src="../medium-editor-insert-plugin/dist/js/medium-editor-insert-plugin.js"></script>
<!--
An element to provide text editor like on medium.com.
Example:
<medium-editor-polymer upload-url="/path/to/image/upload"
upload-method="PUT"
upload-data-type="/(\.|\/)(gif|jpe?g|png)$/i"
upload-field-name="image">
</medium-editor-polymer>
@demo
-->
<dom-module id="medium-editor-polymer">
<template>
<div class="editable" id="medium-editor">
<content></content>
</div>
</template>
</dom-module>
<script>
Polymer({
is: "medium-editor-polymer",
/**
* DOM element of the editor we want.
*
* @name MediumEditor#element
* @type {HTMLDivElement}
* @default undefined
*/
element: undefined,
/**
* MediumEditor created from {@link MediumEditor#element}
*
* @name MediumEditor#editor
* @type {HTMLDivElement}
* @default undefined
*/
editor: undefined,
properties: {
uploadUrl: {
type: String,
value: ""
},
uploadMethod: {
type: String,
value: "PUT"
},
uploadDataType: {
type: Object,
value: /(\.|\/)(gif|jpe?g|png)$/i
},
uploadFieldName: {
type: String,
default: "image"
}
},
getEditorContent: function () {
var ec = this.editor.serialize();
return ec["medium-editor"]["value"];
},
// Element Lifecycle
ready: function() {
var that = this;
that.element = document.querySelector("#medium-editor");
that.editor = new MediumEditor(that.element);
$("#medium-editor").mediumInsert({
editor: that.editor,
enabled: true,
addons: {
images: {
fileUploadOptions: {
url: that.uploadUrl,
type: that.uploadMethod,
dataType: that.uploadDataType,
paramName: that.uploadFieldName,
fail: function (e, data) {
that.fire('image-upload-failed', data, {
node: that
});
}
},
styles: {
flc: { // full-left-caption
label: "<span class='met image-flc'></span>",
},
wide: {
label: "<span class='met image-wide'></span>",
},
left: {
label: "<span class='met image-left'></span>",
},
right: {
label: "<span class='met image-right'></span>",
},
grid: {
label: "<span class='met image-grid'></span>",
}
}
},
embeds: {
styles: {
wide: {
label: "<span class='met video-wide'></span>",
},
left: {
label: "<span class='met video-left'></span>",
},
right: {
label: "<span class='met video-right'></span>",
},
flc: { // full-left-caption
label: "<span class='met video-flc'></span>",
}
}
}
}
});
},
});
</script>