Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
moughxyz committed Jun 10, 2017
0 parents commit 1d68366
Show file tree
Hide file tree
Showing 8 changed files with 395 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
.sass-cache
43 changes: 43 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
module.exports = function(grunt) {

grunt.initConfig({

watch: {
js: {
files: ['.src/**/*.js'],
tasks: ['babel', 'browserify'],
options: {
spawn: false,
},
},
},

babel: {
options: {
sourceMap: true,
presets: ['es2016']
},
dist: {
files: {
'dist/dist.js': 'src/componentManager.js'
}
}
},

browserify: {
dist: {
files: {
'dist/dist.js': 'dist/dist.js'
}
}
}

});

grunt.loadNpmTasks('grunt-newer');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-browserify');

grunt.registerTask('default', ['babel', 'browserify']);
};
160 changes: 160 additions & 0 deletions dist/dist.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
class ComponentManager {

constructor($timeout) {
this.sentMessages = [];
this.messageQueue = [];

window.addEventListener("message", function (event) {
console.log("Autocomplete tags: message received", event.data);
this.handleMessage(event.data);
}.bind(this), false);
}

handleMessage(payload) {
if (payload.action === "component-registered") {
this.sessionKey = payload.sessionKey;
this.onReady();
} else if (payload.original) {
// get callback from queue
var originalMessage = this.sentMessages.filter(function (message) {
return message.messageId === payload.original.messageId;
})[0];

if (originalMessage.callback) {
originalMessage.callback(payload.data);
}
}
}

onReady() {
for (var message of this.messageQueue) {
this.postMessage(message.action, message.data, message.callback);
}
this.messageQueue = [];
}

postMessage(action, data, callback) {
if (!this.sessionKey) {
this.messageQueue.push({
action: action,
data: data,
callback: callback
});
return;
}

var message = {
action: action,
data: data,
messageId: this.generateUUID(),
sessionKey: this.sessionKey,
api: "component"
};

var sentMessage = JSON.parse(JSON.stringify(message));
sentMessage.callback = callback;
this.sentMessages.push(sentMessage);

window.parent.postMessage(message, '*');
}

setSize(type, width, height) {
this.postMessage("set-size", { type: type, width: width, height: height }, function (data) {});
}

streamItems(callback) {
this.postMessage("stream-items", { content_types: ["Tag"] }, function (data) {
var tags = data.items;
callback(tags);
}.bind(this));
}

streamReferences(callback) {
this.postMessage("stream-references", {}, function (data) {
var references = data.references;
var tagRefs = references.filter(function (ref) {
return ref.content_type === "Tag";
});
callback(tagRefs);
}.bind(this));
}

selectItem(item) {
this.postMessage("select-item", { item: this.jsonObjectForItem(item) });
}

createItem(item) {
this.postMessage("create-item", { item: this.jsonObjectForItem(item) }, function (data) {
var item = data.item;
this.associateItem(item);
}.bind(this));
}

associateItem(item) {
this.postMessage("associate-item", { item: this.jsonObjectForItem(item) });
}

deassociateItem(item) {
this.postMessage("deassociate-item", { item: this.jsonObjectForItem(item) });
}

clearSelection() {
this.postMessage("clear-selection", { content_type: "Tag" });
}

deleteItem(item) {
this.postMessage("delete-item", { item: this.jsonObjectForItem(item) });
}

saveItem(item) {
this.saveItems[item];
}

saveItems(items) {
items = items.map(function (item) {
return this.jsonObjectForItem(item);
}.bind(this));

this.postMessage("save-items", { items: items }, function (data) {});
}

jsonObjectForItem(item) {
var copy = Object.assign({}, item);
copy.children = null;
copy.parent = null;
return copy;
}

generateUUID() {
var crypto = window.crypto || window.msCrypto;
if (crypto) {
var buf = new Uint32Array(4);
crypto.getRandomValues(buf);
var idx = -1;
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
idx++;
var r = buf[idx >> 3] >> idx % 8 * 4 & 15;
var v = c == 'x' ? r : r & 0x3 | 0x8;
return v.toString(16);
});
} else {
var d = new Date().getTime();
if (window.performance && typeof window.performance.now === "function") {
d += performance.now(); //use high-precision timer if available
}
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);
});
return uuid;
}
}
}

window.ComponentManager = ComponentManager;
window.SNComponentManager = new SNComponentManager();


},{}]},{},[1]);
1 change: 1 addition & 0 deletions dist/dist.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html ng-app="app">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<title>Autocomplete</title>
<script src="dist/compiled.js"></script>
<link href="dist/app.css" rel="stylesheet"></link>
</head>
<body>
<div ng-controller="HomeCtrl" ng-include="'home.html'"></div>
</body>
</html>
14 changes: 14 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "NestedTags",
"version": "1.0.0",
"devDependencies": {
"grunt": "^1.0.1",
"grunt-contrib-watch": "^1.0.0",
"grunt-newer": "^1.2.0",
"babel-cli": "^6.18.0",
"babel-preset-env": "^1.1.1",
"babel-preset-es2016": "^6.16.0",
"grunt-babel": "^6.0.0",
"grunt-browserify": "^5.0.0"
}
}
Loading

0 comments on commit 1d68366

Please sign in to comment.